transactd 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -16,7 +16,6 @@
16
16
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
17
  02111-1307, USA.
18
18
  ================================================================= */
19
- //#define BOOST_TEST_MAIN
20
19
  //#define BOOST_TEST_MODULE
21
20
 
22
21
  #include <boost/test/included/unit_test.hpp>
@@ -28,16 +27,18 @@
28
27
  #include <bzs/db/protocol/tdap/client/stringConverter.h>
29
28
  #include <stdio.h>
30
29
  #include <bzs/db/protocol/tdap/client/filter.h>
30
+ #include <bzs/example/queryData.h>
31
+ #include <bzs/db/protocol/tdap/client/activeTable.h>
31
32
 
33
+ #include <bzs/db/protocol/tdap/client/pooledDatabaseManager.h>
32
34
 
33
35
  using namespace bzs::db::protocol::tdap::client;
34
36
  using namespace bzs::db::protocol::tdap;
35
37
  using namespace std;
36
38
 
37
39
  #define PROTOCOL _T("tdap")
38
- static _TCHAR HOSTNAME[MAX_PATH] =
39
- {_T("127.0.0.1")};
40
- #define DBNAME _T("test")
40
+ static _TCHAR HOSTNAME[MAX_PATH] = { _T("127.0.0.1") };
41
+ #define DBNAME _T("test")
41
42
  #define BDFNAME _T("test.bdf")
42
43
  // #define ISOLATION_REPEATABLE_READ
43
44
  #define ISOLATION_READ_COMMITTED
@@ -53,11 +54,12 @@ boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[])
53
54
  if (strstr(argv[i], "--host=") == argv[i])
54
55
  {
55
56
  #ifdef _UNICODE
56
- MultiByteToWideChar(CP_ACP, (CP_ACP == CP_UTF8) ? 0 : MB_PRECOMPOSED, argv[i] + 7, -1, HOSTNAME, MAX_PATH);
57
+ MultiByteToWideChar(CP_ACP,
58
+ (CP_ACP == CP_UTF8) ? 0 : MB_PRECOMPOSED,
59
+ argv[i] + 7, -1, HOSTNAME, MAX_PATH);
57
60
  #else
58
61
  strcpy_s(HOSTNAME, MAX_PATH, argv[i] + 7);
59
62
  #endif
60
-
61
63
  }
62
64
  }
63
65
  return 0;
@@ -65,14 +67,15 @@ boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[])
65
67
 
66
68
  static _TCHAR g_uri[MAX_PATH];
67
69
 
68
- const _TCHAR* makeUri(const _TCHAR* protocol, const _TCHAR* host, const _TCHAR* dbname, const _TCHAR* dbfile = NULL)
70
+ const _TCHAR* makeUri(const _TCHAR* protocol, const _TCHAR* host,
71
+ const _TCHAR* dbname, const _TCHAR* dbfile = NULL)
69
72
  {
70
73
  if (dbfile)
71
- _stprintf_s(g_uri, MAX_PATH, _T("%s://%s/%s?dbfile=%s"), protocol, host, dbname, dbfile);
74
+ _stprintf_s(g_uri, MAX_PATH, _T("%s://%s/%s?dbfile=%s"), protocol, host,
75
+ dbname, dbfile);
72
76
  else
73
77
  _stprintf_s(g_uri, MAX_PATH, _T("%s://%s/%s"), protocol, host, dbname);
74
78
  return g_uri;
75
-
76
79
  }
77
80
 
78
81
  class fixture
@@ -82,6 +85,7 @@ class fixture
82
85
  public:
83
86
  fixture() : m_db(NULL)
84
87
  {
88
+ nsdatabase::setCheckTablePtr(true);
85
89
  m_db = database::create();
86
90
  if (!m_db)
87
91
  printf("Error database::create()\n");
@@ -90,18 +94,47 @@ public:
90
94
  ~fixture()
91
95
  {
92
96
  if (m_db)
93
- database::destroy(m_db);
97
+ {
98
+ // Test for SWIG interface
99
+ m_db->release();
100
+ // Test for c++
101
+ // database::destroy(m_db);
102
+ }
94
103
  }
95
104
 
96
- ::database* db() const {return m_db;}
105
+ ::database* db() const { return m_db; }
97
106
  };
98
107
 
99
- table* openTable(database* db)
108
+ class fixtureQuery
100
109
  {
110
+ database_ptr m_db;
111
+
112
+ public:
113
+ fixtureQuery()
114
+ {
115
+ m_db = createDatabaseObject();
116
+ if (!m_db)
117
+ printf("Error database::create()\n");
118
+ connectParams param(PROTOCOL, HOSTNAME, _T("querytest"),
119
+ _T("test.bdf"));
120
+ param.setMode(TD_OPEN_NORMAL);
121
+
122
+ prebuiltData(m_db, param);
123
+ }
124
+
125
+ ~fixtureQuery() {}
101
126
 
102
- db->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME), TYPE_SCHEMA_BDF, TD_OPEN_NORMAL);
127
+ database* db() const { return m_db.get(); }
128
+ };
129
+
130
+ table* openTable(database* db, short dbmode = TD_OPEN_NORMAL,
131
+ short tbmode = TD_OPEN_NORMAL)
132
+ {
133
+
134
+ db->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME), TYPE_SCHEMA_BDF,
135
+ dbmode);
103
136
  BOOST_CHECK_MESSAGE(0 == db->stat(), "open 1" << db->stat());
104
- table* tb = db->openTable(_T("user"));
137
+ table* tb = db->openTable(_T("user"), tbmode);
105
138
  BOOST_CHECK_MESSAGE(0 == db->stat(), "openTable" << db->stat());
106
139
  return tb;
107
140
  }
@@ -117,25 +150,46 @@ void testDropDatabase(database* db)
117
150
 
118
151
  void testClone(database* db)
119
152
  {
153
+ db->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME), TYPE_SCHEMA_BDF,
154
+ TD_OPEN_NORMAL);
155
+
120
156
  database* db2 = db->clone();
121
157
  BOOST_CHECK_MESSAGE(db2 != NULL, "createNewDataBase stat = " << db->stat());
158
+ db2->close();
159
+ db2->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME), TYPE_SCHEMA_BDF,
160
+ TD_OPEN_NORMAL);
161
+
162
+ BOOST_CHECK_MESSAGE(db2->stat() == 0, "db2 close stat = " << db2->stat());
163
+ db->close();
164
+ BOOST_CHECK_MESSAGE(db->stat() == 0, "db close stat = " << db->stat());
165
+ table* tb = db2->openTable(_T("user"), TD_OPEN_NORMAL);
166
+ BOOST_CHECK_MESSAGE(0 == db2->stat(), "openTable" << db2->stat());
122
167
  if (db2)
123
- database::destroy(db2);
168
+ db2->release();
169
+ bool ret = nsdatabase::testTablePtr(tb);
170
+ BOOST_CHECK_MESSAGE(ret == true, "testTablePtr");
171
+ tb->release();
172
+
173
+ ret = nsdatabase::testTablePtr(tb);
174
+ BOOST_CHECK_MESSAGE(ret == false, "testTablePtr");
124
175
  }
125
176
 
126
177
  void testCreateNewDataBase(database* db)
127
178
  {
128
179
 
129
- db->create(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME));
180
+ db->create(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME));
130
181
  if (db->stat() == STATUS_TABLE_EXISTS_ERROR)
131
182
  {
132
183
  testDropDatabase(db);
133
184
  db->create(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME));
134
185
  }
135
- BOOST_CHECK_MESSAGE(0 == db->stat(), "createNewDataBase stat = " << db->stat());
186
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
187
+ "createNewDataBase stat = " << db->stat());
136
188
  // create table
137
- db->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME), TYPE_SCHEMA_BDF, TD_OPEN_NORMAL);
138
- BOOST_CHECK_MESSAGE(0 == db->stat(), "createNewDataBase 1 stat = " << db->stat());
189
+ db->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME), TYPE_SCHEMA_BDF,
190
+ TD_OPEN_NORMAL);
191
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
192
+ "createNewDataBase 1 stat = " << db->stat());
139
193
 
140
194
  dbdef* def = db->dbDef();
141
195
  if (def)
@@ -150,35 +204,40 @@ void testCreateNewDataBase(database* db)
150
204
  td.replicaKeyNum = -1;
151
205
  td.pageSize = 2048;
152
206
  def->insertTable(&td);
153
- BOOST_CHECK_MESSAGE(0 == def->stat(), "insertTable stat = " << def->stat());
207
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
208
+ "insertTable stat = " << def->stat());
154
209
 
155
210
  fielddef* fd = def->insertField(1, 0);
156
211
  fd->setName(_T("id"));
157
212
  fd->type = ft_integer;
158
213
  fd->len = (ushort_td)4;
159
214
  def->updateTableDef(1);
160
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 1 stat = " << def->stat());
215
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
216
+ "updateTableDef 1 stat = " << def->stat());
161
217
 
162
218
  fd = def->insertField(1, 1);
163
219
  fd->setName(_T("name"));
164
220
  fd->type = ft_zstring;
165
221
  fd->len = (ushort_td)33;
166
222
  def->updateTableDef(1);
167
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 2 stat = " << def->stat());
223
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
224
+ "updateTableDef 2 stat = " << def->stat());
168
225
 
169
226
  fd = def->insertField(1, 2);
170
227
  fd->setName(_T("select"));
171
228
  fd->type = ft_integer;
172
229
  fd->len = (ushort_td)4;
173
230
  def->updateTableDef(1);
174
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 2 stat = " << def->stat());
231
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
232
+ "updateTableDef 2 stat = " << def->stat());
175
233
 
176
234
  fd = def->insertField(1, 3);
177
235
  fd->setName(_T("in"));
178
236
  fd->type = ft_integer;
179
237
  fd->len = (ushort_td)4;
180
238
  def->updateTableDef(1);
181
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 2 stat = " << def->stat());
239
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
240
+ "updateTableDef 2 stat = " << def->stat());
182
241
 
183
242
  keydef* kd = def->insertKey(1, 0);
184
243
  kd->segments[0].fieldNum = 0;
@@ -187,16 +246,16 @@ void testCreateNewDataBase(database* db)
187
246
  kd->segmentCount = 1;
188
247
 
189
248
  def->updateTableDef(1);
190
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 3 stat = " << def->stat());
191
-
249
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
250
+ "updateTableDef 3 stat = " << def->stat());
192
251
  }
193
-
194
252
  }
195
253
 
196
254
  void testVersion(database* db)
197
255
  {
198
256
  db->connect(makeUri(PROTOCOL, HOSTNAME, DBNAME));
199
- BOOST_CHECK_MESSAGE(0 == db->stat(), "Version connect stat = " << db->stat());
257
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
258
+ "Version connect stat = " << db->stat());
200
259
  if (0 == db->stat())
201
260
  {
202
261
  btrVersions vv;
@@ -204,23 +263,34 @@ void testVersion(database* db)
204
263
  BOOST_CHECK_MESSAGE(0 == db->stat(), "Version");
205
264
  if (_tcscmp(PROTOCOL, _T("tdap")) == 0)
206
265
  {
207
- BOOST_CHECK_MESSAGE(atoi(CPP_INTERFACE_VER_MAJOR) == vv.versions[0].majorVersion,
266
+ BOOST_CHECK_MESSAGE(
267
+ atoi(CPP_INTERFACE_VER_MAJOR) == vv.versions[0].majorVersion,
208
268
  "clent_Major = " << vv.versions[0].majorVersion);
209
- BOOST_CHECK_MESSAGE(atoi(CPP_INTERFACE_VER_MINOR) == vv.versions[0].minorVersion,
269
+ BOOST_CHECK_MESSAGE(
270
+ atoi(CPP_INTERFACE_VER_MINOR) == vv.versions[0].minorVersion,
210
271
  "clent_Miner = " << vv.versions[0].minorVersion);
211
- BOOST_CHECK_MESSAGE((int)'N' == (int)vv.versions[0].type, "clent_Type = " << vv.versions[0].type);
272
+ BOOST_CHECK_MESSAGE((int)'N' == (int)vv.versions[0].type,
273
+ "clent_Type = " << vv.versions[0].type);
212
274
 
213
- BOOST_CHECK_MESSAGE(((5 == vv.versions[1].majorVersion)||(10 == vv.versions[1].majorVersion)),
275
+ BOOST_CHECK_MESSAGE(
276
+ ((5 == vv.versions[1].majorVersion) ||
277
+ (10 == vv.versions[1].majorVersion)),
214
278
  "mysql_server_Major = " << vv.versions[1].majorVersion);
215
- BOOST_CHECK_MESSAGE(((5 <= vv.versions[1].minorVersion)||(0 == vv.versions[1].minorVersion)),
279
+ BOOST_CHECK_MESSAGE(
280
+ ((5 <= vv.versions[1].minorVersion) ||
281
+ (0 == vv.versions[1].minorVersion)),
216
282
  "mysql_server_Miner = " << vv.versions[1].minorVersion);
217
- BOOST_CHECK_MESSAGE((int)'M' == (int)vv.versions[1].type, "mysql_server_Type = " << vv.versions[1].type);
283
+ BOOST_CHECK_MESSAGE((int)'M' == (int)vv.versions[1].type,
284
+ "mysql_server_Type = " << vv.versions[1].type);
218
285
 
219
- BOOST_CHECK_MESSAGE(TRANSACTD_VER_MAJOR == vv.versions[2].majorVersion,
286
+ BOOST_CHECK_MESSAGE(
287
+ TRANSACTD_VER_MAJOR == vv.versions[2].majorVersion,
220
288
  "server_Major = " << vv.versions[2].majorVersion);
221
- BOOST_CHECK_MESSAGE(TRANSACTD_VER_MINOR == vv.versions[2].minorVersion,
289
+ BOOST_CHECK_MESSAGE(
290
+ TRANSACTD_VER_MINOR == vv.versions[2].minorVersion,
222
291
  "server_Miner = " << vv.versions[2].minorVersion);
223
- BOOST_CHECK_MESSAGE((int)'T' == (int)vv.versions[2].type, "server_Type = " << vv.versions[2].type);
292
+ BOOST_CHECK_MESSAGE((int)'T' == (int)vv.versions[2].type,
293
+ "server_Type = " << vv.versions[2].type);
224
294
  }
225
295
  }
226
296
  }
@@ -252,13 +322,12 @@ void testInsert(database* db)
252
322
  if (i == 87170)
253
323
  i = 87170;
254
324
  tb->insert();
255
-
256
325
  }
257
326
  tb->commitBulkInsert();
258
327
  db->endTrn();
259
328
 
260
329
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "Insert2");
261
- tb->release();
330
+ tb->release();
262
331
  }
263
332
 
264
333
  void testFind(database* db)
@@ -299,7 +368,7 @@ void testFind(database* db)
299
368
  tb->setFV((short)0, v);
300
369
  tb->find(table::findForword);
301
370
  BOOST_CHECK_MESSAGE(STATUS_EOF == tb->stat(), "find stat");
302
- tb->release();
371
+ tb->release();
303
372
  }
304
373
 
305
374
  void testFindNext(database* db)
@@ -317,9 +386,8 @@ void testFindNext(database* db)
317
386
  tb->findNext(true); // 11 ~ 19
318
387
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "findNext stat()");
319
388
  BOOST_CHECK_MESSAGE(i == tb->getFVint(fdi_id), "findNext value");
320
-
321
389
  }
322
- tb->release();
390
+ tb->release();
323
391
  }
324
392
 
325
393
  void testFindIn(database* db)
@@ -336,15 +404,13 @@ void testFindIn(database* db)
336
404
  q.addSeekKeyValue(_T("80"));
337
405
  q.addSeekKeyValue(_T("5000"));
338
406
 
339
-
340
-
341
407
  tb->setQuery(&q);
342
408
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "find in stat = " << tb->stat());
343
409
  tb->find();
344
410
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "find in stat = " << tb->stat());
345
411
  BOOST_CHECK_MESSAGE(tb->getFVint(fdi_id) == 10, "find in 10");
346
412
  tb->findNext();
347
- BOOST_CHECK_MESSAGE(tb->stat() == 4, "find in 300000");
413
+ BOOST_CHECK_MESSAGE(tb->stat() == 4, "find in 300000 stat =" << tb->stat());
348
414
 
349
415
  _TCHAR msg[1024];
350
416
  tb->keyValueDescription(msg, 1024);
@@ -369,15 +435,15 @@ void testFindIn(database* db)
369
435
 
370
436
  // Many params
371
437
  _TCHAR buf[20];
372
- _ltot_s(1, buf, 20, 10);
438
+ _ltot_s(1, buf, 20, 10);
373
439
  q.addSeekKeyValue(buf, true);
374
440
 
375
- for (int i=2;i<=10000;++i)
376
- {
441
+ for (int i = 2; i <= 10000; ++i)
442
+ {
377
443
  _ltot_s(i, buf, 20, 10);
378
- q.addSeekKeyValue(buf);
379
- }
380
- tb->setQuery(&q);
444
+ q.addSeekKeyValue(buf);
445
+ }
446
+ tb->setQuery(&q);
381
447
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "find in stat = " << tb->stat());
382
448
 
383
449
  tb->find();
@@ -391,7 +457,7 @@ void testFindIn(database* db)
391
457
  BOOST_CHECK_MESSAGE(i == 10000, "findNext in count");
392
458
  BOOST_CHECK_MESSAGE(9 == tb->stat(), "find in end stat = " << tb->stat());
393
459
 
394
- //LogicalCountLimit
460
+ // LogicalCountLimit
395
461
  q.addField(_T("id"));
396
462
  tb->setQuery(&q);
397
463
 
@@ -406,7 +472,7 @@ void testFindIn(database* db)
406
472
  BOOST_CHECK_MESSAGE(i == 10000, "findNext in count");
407
473
  BOOST_CHECK_MESSAGE(9 == tb->stat(), "find in end stat = " << tb->stat());
408
474
 
409
- tb->release();
475
+ tb->release();
410
476
  }
411
477
 
412
478
  void testGetPercentage(database* db)
@@ -420,7 +486,7 @@ void testGetPercentage(database* db)
420
486
  percentage_td per = tb->getPercentage();
421
487
 
422
488
  BOOST_CHECK_MESSAGE(true == (1200 > abs(5000 - per)), "GetPercentage");
423
- tb->release();
489
+ tb->release();
424
490
  }
425
491
 
426
492
  void testMovePercentage(database* db)
@@ -430,8 +496,9 @@ void testMovePercentage(database* db)
430
496
  tb->seekByPercentage(5000); // 50%
431
497
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "MovePercentage");
432
498
  // If mainus is less than 500 then ok.
433
- BOOST_CHECK_MESSAGE(true == (3000 > abs(10001 - tb->getFVint(fdi_id))), "MovePercentage 1");
434
- tb->release();
499
+ BOOST_CHECK_MESSAGE(true == (3000 > abs(10001 - tb->getFVint(fdi_id))),
500
+ "MovePercentage 1");
501
+ tb->release();
435
502
  }
436
503
 
437
504
  void testGetEqual(database* db)
@@ -445,10 +512,9 @@ void testGetEqual(database* db)
445
512
 
446
513
  tb->seek();
447
514
  BOOST_CHECK_MESSAGE(i == tb->getFVint(fdi_id), "GetEqual");
448
-
449
515
  }
450
516
  db->endSnapshot();
451
- tb->release();
517
+ tb->release();
452
518
  }
453
519
 
454
520
  void testGetNext(database* db)
@@ -467,7 +533,7 @@ void testGetNext(database* db)
467
533
  tb->seekNext();
468
534
  db->endSnapshot();
469
535
  }
470
- tb->release();
536
+ tb->release();
471
537
  }
472
538
 
473
539
  void testGetPrevious(database* db)
@@ -485,10 +551,11 @@ void testGetPrevious(database* db)
485
551
  BOOST_CHECK_MESSAGE(i == tb->getFVint(fdi_id), "GetPrevious I");
486
552
  }
487
553
  tb->seekPrev();
488
- BOOST_CHECK_MESSAGE(_tstring(_T("kosaka")) == _tstring(tb->getFVstr(1)), "GetPrevious kosaka");
554
+ BOOST_CHECK_MESSAGE(_tstring(_T("kosaka")) == _tstring(tb->getFVstr(1)),
555
+ "GetPrevious kosaka");
489
556
 
490
557
  db->endSnapshot();
491
- tb->release();
558
+ tb->release();
492
559
  }
493
560
 
494
561
  void testGetGreater(database* db)
@@ -509,7 +576,7 @@ void testGetGreater(database* db)
509
576
  BOOST_CHECK_MESSAGE(vv + 1 == tb->getFVint(fdi_id), "GetGreater false");
510
577
  tb->seekPrev();
511
578
  BOOST_CHECK_MESSAGE(vv == tb->getFVint(fdi_id), "GetGreater GetPrevious");
512
- tb->release();
579
+ tb->release();
513
580
  }
514
581
 
515
582
  void testGetLessThan(database* db)
@@ -530,8 +597,9 @@ void testGetLessThan(database* db)
530
597
  tb->seekLessThan(false);
531
598
  BOOST_CHECK_MESSAGE(vv - 1 == tb->getFVint(fdi_id), "GetLessThan false");
532
599
  tb->seekPrev();
533
- BOOST_CHECK_MESSAGE(vv - 2 == tb->getFVint(fdi_id), "GetLessThan GetPrevious");
534
- tb->release();
600
+ BOOST_CHECK_MESSAGE(vv - 2 == tb->getFVint(fdi_id),
601
+ "GetLessThan GetPrevious");
602
+ tb->release();
535
603
  }
536
604
 
537
605
  void testGetFirst(database* db)
@@ -539,8 +607,9 @@ void testGetFirst(database* db)
539
607
  table* tb = openTable(db);
540
608
  tb->clearBuffer();
541
609
  tb->seekFirst();
542
- BOOST_CHECK_MESSAGE(_tstring(_T("kosaka")) == _tstring(tb->getFVstr(1)), "GetFirst");
543
- tb->release();
610
+ BOOST_CHECK_MESSAGE(_tstring(_T("kosaka")) == _tstring(tb->getFVstr(1)),
611
+ "GetFirst");
612
+ tb->release();
544
613
  }
545
614
 
546
615
  void testGetLast(database* db)
@@ -549,7 +618,7 @@ void testGetLast(database* db)
549
618
  tb->clearBuffer();
550
619
  tb->seekLast();
551
620
  BOOST_CHECK_MESSAGE(20002 == tb->getFVint(fdi_id), "GetLast");
552
- tb->release();
621
+ tb->release();
553
622
  }
554
623
 
555
624
  void testMovePosition(database* db)
@@ -571,11 +640,12 @@ void testMovePosition(database* db)
571
640
  tb->seekLessThan(false);
572
641
  BOOST_CHECK_MESSAGE(vv - 1 == tb->getFVint(fdi_id), "GetLessThan false");
573
642
  tb->seekPrev();
574
- BOOST_CHECK_MESSAGE(vv - 2 == tb->getFVint(fdi_id), "GetLessThan GetPrevious");
643
+ BOOST_CHECK_MESSAGE(vv - 2 == tb->getFVint(fdi_id),
644
+ "GetLessThan GetPrevious");
575
645
 
576
646
  tb->seekByBookmark(pos);
577
647
  BOOST_CHECK_MESSAGE(15000 == tb->getFVint(fdi_id), "MovePosition");
578
- tb->release();
648
+ tb->release();
579
649
  }
580
650
 
581
651
  void testUpdate(database* db)
@@ -609,7 +679,7 @@ void testUpdate(database* db)
609
679
  v = 19999;
610
680
  tb->setFV(fdi_id, v);
611
681
  tb->update(table::changeCurrentCc); // 6 -> 19999 cur 19999
612
- tb->seekPrev(); // prev 19999
682
+ tb->seekPrev(); // prev 19999
613
683
  BOOST_CHECK_MESSAGE(v - 1 == tb->getFVint(fdi_id), "UpDate3");
614
684
  v = 10;
615
685
  tb->clearBuffer();
@@ -642,8 +712,9 @@ void testUpdate(database* db)
642
712
  tb->clearBuffer();
643
713
  tb->setFV(fdi_id, v);
644
714
  tb->seek();
645
- BOOST_CHECK_MESSAGE(_tcscmp(_T("ABC"), tb->getFVstr(fdi_name)) == 0, "update changeInKey2");
646
- tb->release();
715
+ BOOST_CHECK_MESSAGE(_tcscmp(_T("ABC"), tb->getFVstr(fdi_name)) == 0,
716
+ "update changeInKey2");
717
+ tb->release();
647
718
  }
648
719
 
649
720
  void testSnapShot(database* db)
@@ -669,10 +740,11 @@ void testSnapShot(database* db)
669
740
  tb2->setFV(fdi_name, tb2->getFVint(fdi_name) + 1);
670
741
  tb2->update();
671
742
  #ifdef ISOLATION_READ_COMMITTED
672
- BOOST_CHECK_MESSAGE(0 == tb2->stat(), "tb2->update(");
743
+ BOOST_CHECK_MESSAGE(0 == tb2->stat(), "tb2->update stat = " << tb2->stat());
673
744
  #else
674
745
  #ifdef ISOLATION_REPEATABLE_READ
675
- BOOST_CHECK_MESSAGE(STATUS_LOCK_ERROR == tb2->stat(), "tb2->update(");
746
+ BOOST_CHECK_MESSAGE(STATUS_LOCK_ERROR == tb2->stat(),
747
+ "tb2->update stat = " << tb2->stat());
676
748
  #endif
677
749
  #endif
678
750
  /* -------------------------------------------------- */
@@ -690,8 +762,8 @@ void testSnapShot(database* db)
690
762
  #endif
691
763
 
692
764
  /* -------------------------------------------------- */
693
- tb->release();
694
- tb2->release();
765
+ tb->release();
766
+ tb2->release();
695
767
  database::destroy(db2);
696
768
  }
697
769
 
@@ -740,15 +812,15 @@ void testConflict(database* db)
740
812
  tb->update();
741
813
  BOOST_CHECK_MESSAGE(STATUS_CHANGE_CONFLICT == tb->stat(), "tb->update(");
742
814
  /* -------------------------------------------------- */
743
- tb->release();
744
- tb2->release();
815
+ tb->release();
816
+ tb2->release();
745
817
  database::destroy(db2);
746
818
  }
747
819
 
748
820
  void testTransactionLock(database* db)
749
821
  {
750
-
751
- database* db2 = database::create();
822
+
823
+ database* db2 = database::create();
752
824
  db2->connect(makeUri(PROTOCOL, HOSTNAME, DBNAME), true);
753
825
  BOOST_CHECK_MESSAGE(0 == db2->stat(), "connect");
754
826
  table* tb = openTable(db);
@@ -839,13 +911,96 @@ void testTransactionLock(database* db)
839
911
 
840
912
  tb2->setKeyNum(0);
841
913
  tb2->seekFirst();
842
- BOOST_CHECK_MESSAGE(_tcscmp(tb2->getFVstr(fdi_name), _T("ABC")) == 0, "tb->seekFirst");
914
+ BOOST_CHECK_MESSAGE(_tcscmp(tb2->getFVstr(fdi_name), _T("ABC")) == 0,
915
+ "tb->seekFirst");
843
916
 
844
- tb->release();
845
- tb2->release();
917
+ tb->release();
918
+ tb2->release();
846
919
  database::destroy(db2);
847
920
  }
848
921
 
922
+ void testExclusive()
923
+ {
924
+
925
+ // db mode exclusive
926
+ database* db = database::create();
927
+ table* tb = openTable(db, TD_OPEN_EXCLUSIVE);
928
+ BOOST_CHECK_MESSAGE(0 == db->stat(), "Exclusive opened 1 ");
929
+
930
+ // Can not open another connections.
931
+ database* db2 = database::create();
932
+ db2->connect(makeUri(PROTOCOL, HOSTNAME, DBNAME), true);
933
+ BOOST_CHECK_MESSAGE(0 == db2->stat(), "connect");
934
+ db2->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME), TYPE_SCHEMA_BDF);
935
+ BOOST_CHECK_MESSAGE(STATUS_CANNOT_LOCK_TABLE == db2->stat(),
936
+ "open 1" << db->stat());
937
+
938
+ table* tb2 = db->openTable(_T("user"));
939
+ BOOST_CHECK_MESSAGE(0 == db->stat(), "Exclusive opened 2");
940
+
941
+ tb->setKeyNum(0);
942
+ tb->seekFirst();
943
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "tb->seekFirst");
944
+
945
+ tb->setFV(fdi_name, _T("ABC123"));
946
+ tb->update();
947
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "update");
948
+
949
+ tb2->setKeyNum(0);
950
+ tb2->seekFirst();
951
+ BOOST_CHECK_MESSAGE(0 == tb2->stat(), "update");
952
+ tb2->setFV(fdi_name, _T("ABC124"));
953
+ tb2->update();
954
+ BOOST_CHECK_MESSAGE(0 == tb2->stat(), "update");
955
+
956
+ tb->close();
957
+ tb2->close();
958
+ db->close();
959
+ db2->close();
960
+
961
+ // table mode exclusive
962
+ db = database::create();
963
+ tb = openTable(db, TD_OPEN_READONLY, TD_OPEN_EXCLUSIVE);
964
+
965
+ db2 = database::create();
966
+ db2->connect(makeUri(PROTOCOL, HOSTNAME, DBNAME), true);
967
+ BOOST_CHECK_MESSAGE(0 == db2->stat(), "connect");
968
+ db2->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME), TYPE_SCHEMA_BDF);
969
+ BOOST_CHECK_MESSAGE(0 == db2->stat(), "open 1" << db->stat());
970
+
971
+ // Can not open another connections.
972
+ tb2 = db2->openTable(_T("user"));
973
+ BOOST_CHECK_MESSAGE(STATUS_CANNOT_LOCK_TABLE == db2->stat(),
974
+ "Exclusive opened 2");
975
+
976
+ // Can open a same connection.
977
+ table* tb3 = db->openTable(_T("user"));
978
+ BOOST_CHECK_MESSAGE(0 == db->stat(), "Exclusive opened 2");
979
+
980
+ tb->close();
981
+ if (tb2 != NULL)
982
+ tb2->close();
983
+ tb3->close();
984
+ db->close();
985
+ db2->close();
986
+ db->release();
987
+ db2->release();
988
+ // reopen and update
989
+ db = database::create();
990
+ tb = openTable(db);
991
+
992
+ tb->setKeyNum(0);
993
+ tb->seekFirst();
994
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "tb->seekFirst");
995
+
996
+ tb->setFV(fdi_name, _T("ABC123"));
997
+ tb->update();
998
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "update");
999
+
1000
+ tb->release();
1001
+ db->release();
1002
+ }
1003
+
849
1004
  void testInsert2(database* db)
850
1005
  {
851
1006
  table* tb = openTable(db);
@@ -863,9 +1018,7 @@ void testInsert2(database* db)
863
1018
  tb->seekNext();
864
1019
  BOOST_CHECK_MESSAGE(11 == tb->getFVint(fdi_id), "GetEqual InsNext");
865
1020
  db->endTrn();
866
- tb->release();
867
-
868
-
1021
+ tb->release();
869
1022
  }
870
1023
 
871
1024
  void testDelete(database* db)
@@ -874,16 +1027,20 @@ void testDelete(database* db)
874
1027
 
875
1028
  // estimate number
876
1029
  int count = tb->recordCount(true);
877
- bool c = (abs(count - 20003) < 3000);
1030
+ bool c = (abs(count - 20003) < 5000);
878
1031
  BOOST_CHECK_MESSAGE(c == true, "RecordCount1");
879
1032
  if (!c)
880
1033
  {
881
1034
  char tmp[256];
882
- sprintf_s(tmp, 256, "true record count = 20003 as estimate recordCount count = %d ", count);
1035
+ sprintf_s(
1036
+ tmp, 256,
1037
+ "true record count = 20003 as estimate recordCount count = %d ",
1038
+ count);
883
1039
  BOOST_CHECK_MESSAGE(false, tmp);
884
1040
  }
885
1041
  // true number
886
- BOOST_CHECK_MESSAGE((uint_td)20003 == tb->recordCount(false), "RecordCount2");
1042
+ BOOST_CHECK_MESSAGE((uint_td)20003 == tb->recordCount(false),
1043
+ "RecordCount2");
887
1044
  int vv = 15001;
888
1045
  tb->clearBuffer();
889
1046
  tb->setFV(fdi_id, vv);
@@ -904,7 +1061,8 @@ void testDelete(database* db)
904
1061
  tb->clearBuffer();
905
1062
  tb->setFV(fdi_id, vv);
906
1063
  tb->seek();
907
- BOOST_CHECK_MESSAGE(tb->stat() == STATUS_NOT_FOUND_TI, "delete changeInKey2");
1064
+ BOOST_CHECK_MESSAGE(tb->stat() == STATUS_NOT_FOUND_TI,
1065
+ "delete changeInKey2");
908
1066
 
909
1067
  db->beginTrn();
910
1068
  tb->stepFirst();
@@ -917,8 +1075,7 @@ void testDelete(database* db)
917
1075
  BOOST_CHECK_MESSAGE(9 == tb->stat(), "StepNext");
918
1076
  db->endTrn();
919
1077
  BOOST_CHECK_MESSAGE((uint_td)0 == tb->recordCount(false), "RecordCount");
920
- tb->release();
921
-
1078
+ tb->release();
922
1079
  }
923
1080
 
924
1081
  void testSetOwner(database* db)
@@ -928,7 +1085,7 @@ void testSetOwner(database* db)
928
1085
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "SetOwner");
929
1086
  tb->clearOwnerName();
930
1087
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "SetOwner");
931
- tb->release();
1088
+ tb->release();
932
1089
  }
933
1090
 
934
1091
  void testDropIndex(database* db)
@@ -936,8 +1093,7 @@ void testDropIndex(database* db)
936
1093
  table* tb = openTable(db);
937
1094
  tb->dropIndex(false);
938
1095
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "DropIndex");
939
- tb->release();
940
-
1096
+ tb->release();
941
1097
  }
942
1098
 
943
1099
  void testLogin(database* db)
@@ -952,16 +1108,19 @@ void testLogin(database* db)
952
1108
  // second connection
953
1109
  database* db2 = database::create();
954
1110
  db2->connect(makeUri(PROTOCOL, HOSTNAME, _T("")), true);
955
- BOOST_CHECK_MESSAGE(0 == db->stat(), "new connection connect");
1111
+ BOOST_CHECK_MESSAGE(
1112
+ 0 == db->stat(),
1113
+ "new connection connect db->stat() = " << db->stat());
956
1114
  database::destroy(db2);
957
1115
 
958
1116
  db->disconnect(makeUri(PROTOCOL, HOSTNAME, _T("")));
959
- BOOST_CHECK_MESSAGE(0 == db->stat(), "disconnect");
960
-
1117
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
1118
+ "disconnect db->stat() = " << db->stat());
961
1119
  }
962
1120
  // invalid host name
963
1121
  db->connect(makeUri(PROTOCOL, _T("localhost123"), _T("")));
964
- bool f = (db->stat() == ERROR_TD_INVALID_CLINETHOST) || (db->stat() == ERROR_TD_HOSTNAME_NOT_FOUND);
1122
+ bool f = (db->stat() == ERROR_TD_INVALID_CLINETHOST) ||
1123
+ (db->stat() == ERROR_TD_HOSTNAME_NOT_FOUND);
965
1124
  BOOST_CHECK_MESSAGE(f, "bad host stat =" << db->stat());
966
1125
  if (!f)
967
1126
  {
@@ -972,35 +1131,48 @@ void testLogin(database* db)
972
1131
  BOOST_MESSAGE(buf);
973
1132
  #endif
974
1133
  }
1134
+
1135
+ db->open(makeUri(PROTOCOL, _T("localhost123"), DBNAME, BDFNAME),
1136
+ TYPE_SCHEMA_BDF, TD_OPEN_NORMAL);
1137
+ f = (db->stat() == ERROR_TD_INVALID_CLINETHOST) ||
1138
+ (db->stat() == ERROR_TD_HOSTNAME_NOT_FOUND);
1139
+ BOOST_CHECK_MESSAGE(f, "bad host stat =" << db->stat());
1140
+
975
1141
  testCreateNewDataBase(db);
976
1142
  db->disconnect(makeUri(PROTOCOL, HOSTNAME, DBNAME));
977
- BOOST_CHECK_MESSAGE(0 == db->stat(), "databese disconnect");
1143
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
1144
+ "databese disconnect db->stat() = " << db->stat());
978
1145
 
979
1146
  // true database name
980
1147
  db->connect(makeUri(PROTOCOL, HOSTNAME, DBNAME));
981
- BOOST_CHECK_MESSAGE(0 == db->stat(), "databese ");
1148
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
1149
+ "databese connect db->stat() = " << db->stat());
982
1150
  if (db->stat() == 0)
983
1151
  {
984
1152
  db->disconnect(makeUri(PROTOCOL, HOSTNAME, DBNAME));
985
- BOOST_CHECK_MESSAGE(0 == db->stat(), "databese disconnect");
1153
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
1154
+ "databese disconnect db->stat() = " << db->stat());
986
1155
  }
987
1156
  // invalid database name
988
1157
  testDropDatabase(db);
989
1158
  db->disconnect(makeUri(PROTOCOL, HOSTNAME, DBNAME));
990
- BOOST_CHECK_MESSAGE(0 == db->stat(), "databese disconnect");
1159
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
1160
+ "databese disconnect db->stat() = " << db->stat());
991
1161
 
992
1162
  db->connect(makeUri(PROTOCOL, HOSTNAME, DBNAME));
993
- BOOST_CHECK_MESSAGE(25000 + 1049 == db->stat(), "bad databese connect");
1163
+ BOOST_CHECK_MESSAGE(25000 + 1049 == db->stat(),
1164
+ "databese connect db->stat() = " << db->stat());
994
1165
 
995
1166
  db->disconnect(makeUri(PROTOCOL, HOSTNAME, DBNAME));
996
- BOOST_CHECK_MESSAGE(0 == db->stat(), "bad databese disconnect");
997
-
1167
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
1168
+ "databese disconnect db->stat() = " << db->stat());
998
1169
  }
999
1170
 
1000
1171
  // ------------------------------------------------------------------------
1001
1172
 
1002
1173
  // ------------------------------------------------------------------------
1003
- void doCreateVarTable(database* db, int id, const _TCHAR* name, char fieldType, int charset)
1174
+ void doCreateVarTable(database* db, int id, const _TCHAR* name, char fieldType,
1175
+ int charset)
1004
1176
  {
1005
1177
  // create table
1006
1178
  dbdef* def = db->dbDef();
@@ -1015,6 +1187,7 @@ void doCreateVarTable(database* db, int id, const _TCHAR* name, char fieldType,
1015
1187
  td.keyCount = 0;
1016
1188
  td.fieldCount = 0;
1017
1189
  td.flags.all = 0;
1190
+
1018
1191
  td.primaryKeyNum = -1;
1019
1192
  td.parentKeyNum = -1;
1020
1193
  td.replicaKeyNum = -1;
@@ -1030,34 +1203,33 @@ void doCreateVarTable(database* db, int id, const _TCHAR* name, char fieldType,
1030
1203
  fd->setName(_T("id"));
1031
1204
  fd->type = ft_integer;
1032
1205
  fd->len = (ushort_td)4;
1033
- def->updateTableDef(id);
1034
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 1");
1035
1206
 
1036
1207
  fd = def->insertField(id, 1);
1037
1208
  fd->setName(_T("name"));
1038
1209
  fd->type = fieldType;
1039
1210
  if (fieldType == ft_mywvarchar)
1040
- fd->len = (ushort_td)1 + mysql::charsize(CHARSET_UTF16LE) * 3; // max 3 char len byte
1211
+ fd->len = (ushort_td)1 +
1212
+ mysql::charsize(CHARSET_UTF16LE) * 3; // max 3 char len byte
1041
1213
  else if (fieldType == ft_mywvarbinary)
1042
- fd->len = (ushort_td)1 + mysql::charsize(CHARSET_UTF16LE) * 3; // max 6 char len byte
1214
+ fd->len = (ushort_td)1 +
1215
+ mysql::charsize(CHARSET_UTF16LE) * 3; // max 6 char len byte
1043
1216
  else if (fieldType == ft_myvarchar)
1044
1217
  {
1045
1218
  if (charset == CHARSET_CP932)
1046
- fd->len = (ushort_td)1 + mysql::charsize(CHARSET_CP932) * 3; // max 6 char len byte
1219
+ fd->len = (ushort_td)1 +
1220
+ mysql::charsize(CHARSET_CP932) * 3; // max 6 char len byte
1047
1221
  else if (charset == CHARSET_UTF8B4)
1048
- fd->len = (ushort_td)1 + mysql::charsize(CHARSET_UTF8B4) * 3; // max 6 char len byte
1222
+ fd->len =
1223
+ (ushort_td)1 +
1224
+ mysql::charsize(CHARSET_UTF8B4) * 3; // max 6 char len byte
1049
1225
  }
1050
1226
  else
1051
1227
  fd->len = (ushort_td)7; // max 6 char len byte
1052
- def->updateTableDef(id);
1053
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 2");
1054
1228
 
1055
1229
  fd = def->insertField(id, 2);
1056
1230
  fd->setName(_T("groupid"));
1057
1231
  fd->type = ft_integer;
1058
1232
  fd->len = (ushort_td)4;
1059
- def->updateTableDef(id);
1060
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 3");
1061
1233
 
1062
1234
  keydef* kd = def->insertKey(id, 0);
1063
1235
 
@@ -1066,8 +1238,6 @@ void doCreateVarTable(database* db, int id, const _TCHAR* name, char fieldType,
1066
1238
  kd->segments[0].flags.bit1 = 1; // changeable
1067
1239
  kd->segmentCount = 1;
1068
1240
 
1069
- def->updateTableDef(id);
1070
-
1071
1241
  kd = def->insertKey(id, 1);
1072
1242
 
1073
1243
  kd->segments[0].fieldNum = 1;
@@ -1088,7 +1258,6 @@ void doCreateVarTable(database* db, int id, const _TCHAR* name, char fieldType,
1088
1258
  BOOST_CHECK_MESSAGE(0 == db->stat(), "openTable");
1089
1259
  if (tb)
1090
1260
  tb->release();
1091
-
1092
1261
  }
1093
1262
 
1094
1263
  bool isUtf16leSupport(database* db)
@@ -1111,8 +1280,12 @@ void testCreateDataBaseVar(database* db)
1111
1280
  if (_tcscmp(PROTOCOL, _T("tdap")) != 0)
1112
1281
  return;
1113
1282
 
1283
+ if (db->open(makeUri(PROTOCOL, HOSTNAME, _T("testvar"), BDFNAME)))
1284
+ db->drop();
1285
+
1114
1286
  db->create(makeUri(PROTOCOL, HOSTNAME, _T("testvar"), BDFNAME));
1115
- BOOST_CHECK_MESSAGE(0 == db->stat(), "createNewDataBase stat = " << db->stat());
1287
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
1288
+ "createNewDataBase stat = " << db->stat());
1116
1289
  if (0 == db->stat())
1117
1290
  {
1118
1291
  db->open(makeUri(PROTOCOL, HOSTNAME, _T("testvar"), BDFNAME), 0, 0);
@@ -1123,14 +1296,17 @@ void testCreateDataBaseVar(database* db)
1123
1296
  doCreateVarTable(db, 1, _T("user1"), ft_myvarchar, CHARSET_CP932);
1124
1297
  doCreateVarTable(db, 2, _T("user2"), ft_myvarbinary, CHARSET_CP932);
1125
1298
  if (isUtf16leSupport(db))
1126
- doCreateVarTable(db, 3, _T("user3"), ft_mywvarchar, CHARSET_CP932);
1127
- doCreateVarTable(db, 4, _T("user4"), ft_mywvarbinary, CHARSET_CP932);
1299
+ doCreateVarTable(db, 3, _T("user3"), ft_mywvarchar,
1300
+ CHARSET_CP932);
1301
+ doCreateVarTable(db, 4, _T("user4"), ft_mywvarbinary,
1302
+ CHARSET_CP932);
1128
1303
  doCreateVarTable(db, 5, _T("user5"), ft_myvarchar, CHARSET_UTF8B4);
1129
1304
  db->close();
1130
- db->open(makeUri(PROTOCOL, HOSTNAME, _T("testvar"), TRANSACTD_SCHEMANAME), 0, 0);
1305
+ db->open(makeUri(PROTOCOL, HOSTNAME, _T("testvar"),
1306
+ TRANSACTD_SCHEMANAME),
1307
+ 0, 0);
1131
1308
  }
1132
1309
  }
1133
-
1134
1310
  }
1135
1311
 
1136
1312
  void testDropDataBaseVar(database* db)
@@ -1171,7 +1347,7 @@ void dump(const char* p, int size)
1171
1347
 
1172
1348
  void doTestverField(table* tb, bool unicodeField, bool varCharField)
1173
1349
  {
1174
- // Set Wide Get Wide
1350
+ // Set Wide Get Wide
1175
1351
  #ifdef _WIN32
1176
1352
  tb->setFVW(2, L"68");
1177
1353
  #else
@@ -1183,17 +1359,22 @@ void doTestverField(table* tb, bool unicodeField, bool varCharField)
1183
1359
  tb->setFVW(1, L"1234567");
1184
1360
  if (varCharField)
1185
1361
  {
1186
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"123"), "Get Set W1");
1362
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"123"),
1363
+ "Get Set W1");
1187
1364
  if (wstring(tb->getFVWstr(1)) != wstring(L"123"))
1188
1365
  dump((const char*)tb->getFVWstr(1), 7);
1189
1366
  }
1190
1367
  else
1191
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"123456"), "Get Set W1");
1192
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"), "Orverrun 1");
1368
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"123456"),
1369
+ "Get Set W1");
1370
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"),
1371
+ "Orverrun 1");
1193
1372
  // short
1194
1373
  tb->setFVW(1, L"12 ");
1195
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"12 "), "Get Set W2");
1196
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"), "Orverrun 2");
1374
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"12 "),
1375
+ "Get Set W2");
1376
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"),
1377
+ "Orverrun 2");
1197
1378
  // too long lanji
1198
1379
 
1199
1380
  if (unicodeField)
@@ -1201,36 +1382,46 @@ void doTestverField(table* tb, bool unicodeField, bool varCharField)
1201
1382
 
1202
1383
  tb->setFVW(1, L"あいうえお\xD867\xDE3D"); // kanji that "aiueohokke"
1203
1384
  if (varCharField)
1204
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"あいう"), "Get Set W3");
1385
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"あいう"),
1386
+ "Get Set W3");
1205
1387
  else
1206
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"あいうえお"), "Get Set W3");
1388
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) ==
1389
+ wstring(L"あいうえお"),
1390
+ "Get Set W3");
1207
1391
  }
1208
1392
  else
1209
1393
  {
1210
1394
  tb->setFVW(1, L"0松本市"); // kanji that "matumostoshi"
1211
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"0松本"), "Get Set W3");
1395
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(1)) == wstring(L"0松本"),
1396
+ "Get Set W3");
1212
1397
  }
1213
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"), "Orverrun 2");
1398
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"),
1399
+ "Orverrun 2");
1214
1400
  #endif
1215
1401
 
1216
1402
  // Set Ansi Get Wide
1217
1403
  // too long string
1218
1404
  tb->setFVA(1, "1234567");
1219
1405
  if (varCharField)
1220
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123"), "Get Set A1");
1406
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123"),
1407
+ "Get Set A1");
1221
1408
  else
1222
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123456"), "Get Set A1");
1409
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123456"),
1410
+ "Get Set A1");
1223
1411
 
1224
1412
  #ifdef _WIN32
1225
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"), "Orverrun 1");
1413
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"),
1414
+ "Orverrun 1");
1226
1415
  #else
1227
1416
  BOOST_CHECK_MESSAGE(string(tb->getFVAstr(2)) == string("68"), "Orverrun 1");
1228
1417
  #endif
1229
1418
  // short string
1230
1419
  tb->setFVA(1, "13 ");
1231
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("13 "), "Get Set A2");
1420
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("13 "),
1421
+ "Get Set A2");
1232
1422
  #ifdef _WIN32
1233
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"), "Orverrun 2");
1423
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"),
1424
+ "Orverrun 2");
1234
1425
  #else
1235
1426
  BOOST_CHECK_MESSAGE(string(tb->getFVAstr(2)) == string("68"), "Orverrun 2");
1236
1427
  #endif
@@ -1241,9 +1432,11 @@ void doTestverField(table* tb, bool unicodeField, bool varCharField)
1241
1432
  #ifdef LINUX
1242
1433
  tb->setFVA(1, "あいうえお𩸽"); // kanji that "aiueohokke"
1243
1434
  if (varCharField)
1244
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいう"), "Get Set A3");
1435
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいう"),
1436
+ "Get Set A3");
1245
1437
  else
1246
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいうえお"), "Get Set A3");
1438
+ BOOST_CHECK_MESSAGE(
1439
+ string(tb->getFVAstr(1)) == string("あいうえお"), "Get Set A3");
1247
1440
  #endif
1248
1441
  }
1249
1442
  else
@@ -1253,26 +1446,30 @@ void doTestverField(table* tb, bool unicodeField, bool varCharField)
1253
1446
  BOOST_CHECK_MESSAGE(f, "Get Set A3");
1254
1447
  if (!f)
1255
1448
  BOOST_MESSAGE(tb->getFVAstr(1));
1256
-
1257
1449
  }
1258
1450
  BOOST_CHECK_MESSAGE(string(tb->getFVAstr(2)) == string("68"), "Orverrun 2");
1259
1451
 
1260
- // Set Wide Get Ansi
1452
+ // Set Wide Get Ansi
1261
1453
  #ifdef _WIN32
1262
1454
  // too long string
1263
1455
  tb->setFVW(1, L"1234567");
1264
1456
  if (varCharField)
1265
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123"), "GetA Set W1");
1457
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123"),
1458
+ "GetA Set W1");
1266
1459
  else
1267
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123456"), "GetA Set W1");
1460
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123456"),
1461
+ "GetA Set W1");
1268
1462
 
1269
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"), "Orverrun 1");
1463
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"),
1464
+ "Orverrun 1");
1270
1465
 
1271
1466
  // short string
1272
1467
  tb->setFVW(1, L"23 ");
1273
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("23 "), "GetA Set W2");
1468
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("23 "),
1469
+ "GetA Set W2");
1274
1470
 
1275
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"), "Orverrun 2");
1471
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"),
1472
+ "Orverrun 2");
1276
1473
 
1277
1474
  // too long lanji
1278
1475
  if (unicodeField)
@@ -1280,28 +1477,36 @@ void doTestverField(table* tb, bool unicodeField, bool varCharField)
1280
1477
 
1281
1478
  tb->setFVW(1, L"あいうえお\xD867\xDE3D"); // kanji that "aiueohokke"
1282
1479
  if (varCharField)
1283
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいう"), "GetA Set W3");
1480
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいう"),
1481
+ "GetA Set W3");
1284
1482
  else
1285
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいうえお"), "GetA Set W3");
1483
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) ==
1484
+ string("あいうえお"),
1485
+ "GetA Set W3");
1286
1486
  }
1287
1487
  else
1288
1488
  {
1289
1489
  tb->setFVW(1, L"0松本市"); // kanji that "matumostoshi"
1290
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("0松本"), "GetA Set W3");
1490
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("0松本"),
1491
+ "GetA Set W3");
1291
1492
  }
1292
- BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"), "Orverrun 2");
1493
+ BOOST_CHECK_MESSAGE(wstring(tb->getFVWstr(2)) == wstring(L"68"),
1494
+ "Orverrun 2");
1293
1495
  #endif
1294
1496
  // Set Ansi Get Ansi
1295
1497
  // too long string
1296
1498
  tb->setFVA(1, "1234567");
1297
1499
  if (varCharField)
1298
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123"), "GetA Set A1");
1500
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123"),
1501
+ "GetA Set A1");
1299
1502
  else
1300
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123456"), "GetA Set A1");
1503
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("123456"),
1504
+ "GetA Set A1");
1301
1505
  BOOST_CHECK_MESSAGE(string(tb->getFVAstr(2)) == string("68"), "Orverrun 1");
1302
1506
  // short string
1303
1507
  tb->setFVA(1, "13 ");
1304
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("13 "), "GetA Set A2");
1508
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("13 "),
1509
+ "GetA Set A2");
1305
1510
  BOOST_CHECK_MESSAGE(string(tb->getFVAstr(2)) == string("68"), "Orverrun 2");
1306
1511
 
1307
1512
  // too long lanji
@@ -1310,18 +1515,20 @@ void doTestverField(table* tb, bool unicodeField, bool varCharField)
1310
1515
  #ifdef LINUX
1311
1516
  tb->setFVA(1, "あいうえお𩸽"); // kanji that "aiueohokke"
1312
1517
  if (varCharField)
1313
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいう"), "Get Set A3");
1518
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいう"),
1519
+ "Get Set A3");
1314
1520
  else
1315
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("あいうえお"), "Get Set A3");
1521
+ BOOST_CHECK_MESSAGE(
1522
+ string(tb->getFVAstr(1)) == string("あいうえお"), "Get Set A3");
1316
1523
  #endif
1317
1524
  }
1318
1525
  else
1319
1526
  {
1320
1527
  tb->setFVA(1, "0松本市"); // kanji that "matumostoshi"
1321
- BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("0松本"), "GetA Set A3");
1528
+ BOOST_CHECK_MESSAGE(string(tb->getFVAstr(1)) == string("0松本"),
1529
+ "GetA Set A3");
1322
1530
  }
1323
1531
  BOOST_CHECK_MESSAGE(string(tb->getFVAstr(2)) == string("68"), "Orverrun 2");
1324
-
1325
1532
  }
1326
1533
 
1327
1534
  void testVarField(database* db)
@@ -1363,11 +1570,10 @@ void testVarField(database* db)
1363
1570
  doTestverField(tb, true, true);
1364
1571
 
1365
1572
  tb->release();
1366
-
1367
1573
  }
1368
1574
 
1369
- void doVarInsert(database* db, const _TCHAR* name, unsigned int codePage, const _TCHAR* str, int start, int end,
1370
- bool bulk)
1575
+ void doVarInsert(database* db, const _TCHAR* name, unsigned int codePage,
1576
+ const _TCHAR* str, int start, int end, bool bulk)
1371
1577
  {
1372
1578
  _TCHAR buf[256];
1373
1579
  table* tb = db->openTable(name);
@@ -1385,7 +1591,6 @@ void doVarInsert(database* db, const _TCHAR* name, unsigned int codePage, const
1385
1591
  v = i + 10;
1386
1592
  tb->setFV((short)2, v);
1387
1593
  tb->insert();
1388
-
1389
1594
  }
1390
1595
  if (bulk)
1391
1596
  tb->commitBulkInsert();
@@ -1433,10 +1638,10 @@ void testVarInsert(database* db)
1433
1638
  doVarInsert(db, _T("user4"), CP_ACP, _T(""), start, end, bulk);
1434
1639
  doVarInsert(db, _T("user5"), CP_UTF8, _T(""), start, end, bulk);
1435
1640
  }
1436
-
1437
1641
  }
1438
1642
 
1439
- void doVarRead(database* db, const _TCHAR* name, unsigned int codePage, const _TCHAR* str, int num, char_td key)
1643
+ void doVarRead(database* db, const _TCHAR* name, unsigned int codePage,
1644
+ const _TCHAR* str, int num, char_td key)
1440
1645
  {
1441
1646
 
1442
1647
  table* tb = db->openTable(name);
@@ -1460,10 +1665,10 @@ void doVarRead(database* db, const _TCHAR* name, unsigned int codePage, const _T
1460
1665
  BOOST_CHECK_MESSAGE(f, "GetEqual var field1");
1461
1666
 
1462
1667
  // test read of second field
1463
- BOOST_CHECK_MESSAGE((int)(num + 10) == tb->getFVint(2), "GetEqual var field2");
1668
+ BOOST_CHECK_MESSAGE((int)(num + 10) == tb->getFVint(2),
1669
+ "GetEqual var field2");
1464
1670
 
1465
1671
  tb->release();
1466
-
1467
1672
  }
1468
1673
 
1469
1674
  void testVarRead(database* db)
@@ -1510,7 +1715,8 @@ void testVarRead(database* db)
1510
1715
  }
1511
1716
  }
1512
1717
 
1513
- void doVarFilter(database* db, const _TCHAR* name, unsigned int codePage, const _TCHAR* str, int num, char_td key)
1718
+ void doVarFilter(database* db, const _TCHAR* name, unsigned int codePage,
1719
+ const _TCHAR* str, int num, char_td key)
1514
1720
  {
1515
1721
  table* tb = db->openTable(name);
1516
1722
  BOOST_CHECK_MESSAGE(0 == db->stat(), "openTable");
@@ -1534,7 +1740,8 @@ void doVarFilter(database* db, const _TCHAR* name, unsigned int codePage, const
1534
1740
  // test read of var field
1535
1741
  BOOST_CHECK_MESSAGE(i == tb->getFVint(1), "findNext");
1536
1742
  // test read of second field
1537
- BOOST_CHECK_MESSAGE((int)(i + 10) == tb->getFVint(2), "GetEqual var field2");
1743
+ BOOST_CHECK_MESSAGE((int)(i + 10) == tb->getFVint(2),
1744
+ "GetEqual var field2");
1538
1745
  }
1539
1746
 
1540
1747
  // find previous
@@ -1551,11 +1758,13 @@ void doVarFilter(database* db, const _TCHAR* name, unsigned int codePage, const
1551
1758
  // test read of var field
1552
1759
  BOOST_CHECK_MESSAGE(i == tb->getFVint(1), "FindPrev");
1553
1760
  // test read of second field
1554
- BOOST_CHECK_MESSAGE((int)(i + 10) == tb->getFVint(2), "FindPrev var field2");
1761
+ BOOST_CHECK_MESSAGE((int)(i + 10) == tb->getFVint(2),
1762
+ "FindPrev var field2");
1555
1763
  }
1556
1764
 
1557
1765
  // test record count
1558
- BOOST_CHECK_MESSAGE((uint_td)10 == tb->recordCount(), "GetEqual var field2");
1766
+ BOOST_CHECK_MESSAGE((uint_td)10 == tb->recordCount(),
1767
+ "GetEqual var field2");
1559
1768
  }
1560
1769
  else
1561
1770
  {
@@ -1564,7 +1773,6 @@ void doVarFilter(database* db, const _TCHAR* name, unsigned int codePage, const
1564
1773
  tb->setFV((short)2, v);
1565
1774
  }
1566
1775
  tb->release();
1567
-
1568
1776
  }
1569
1777
 
1570
1778
  void testFilterVar(database* db)
@@ -1578,8 +1786,6 @@ void testFilterVar(database* db)
1578
1786
  {
1579
1787
  const _TCHAR* str = _T("漢字文");
1580
1788
  const _TCHAR* str3 = _T("漢字文字のテ");
1581
- const _TCHAR* str2 = _T("123");
1582
- const _TCHAR* str4 = _T("1232");
1583
1789
  bool utf16leSupport = isUtf16leSupport(db);
1584
1790
 
1585
1791
  int num = 10;
@@ -1593,6 +1799,8 @@ void testFilterVar(database* db)
1593
1799
 
1594
1800
  #ifdef _UNICODE
1595
1801
  // short string
1802
+ const _TCHAR* str2 = _T("123");
1803
+ const _TCHAR* str4 = _T("1232");
1596
1804
  ++num;
1597
1805
  doVarFilter(db, L"user1", CP_ACP, str2, num, key);
1598
1806
  doVarFilter(db, L"user2", CP_ACP, str4, num, key);
@@ -1600,6 +1808,7 @@ void testFilterVar(database* db)
1600
1808
  doVarFilter(db, L"user3", CP_ACP, str2, num, key);
1601
1809
  doVarFilter(db, L"user4", CP_ACP, str4, num, key);
1602
1810
  doVarFilter(db, L"user5", CP_UTF8, str2, num, key);
1811
+
1603
1812
  #endif
1604
1813
 
1605
1814
  key = 1;
@@ -1610,13 +1819,13 @@ void testFilterVar(database* db)
1610
1819
  doVarFilter(db, _T("user4"), CP_ACP, _T("120"), 120, key);
1611
1820
  doVarFilter(db, _T("user5"), CP_UTF8, _T("120"), 120, key);
1612
1821
  }
1613
-
1614
1822
  }
1615
1823
  // ------------------------------------------------------------------------
1616
1824
 
1617
1825
  // ------------------------------------------------------------------------
1618
1826
 
1619
- void stringFileterCreateTable(database* db, int id, const _TCHAR* name, uchar_td type, uchar_td type2)
1827
+ void stringFileterCreateTable(database* db, int id, const _TCHAR* name,
1828
+ uchar_td type, uchar_td type2)
1620
1829
  {
1621
1830
  // create table
1622
1831
 
@@ -1644,7 +1853,8 @@ void stringFileterCreateTable(database* db, int id, const _TCHAR* name, uchar_td
1644
1853
  fd->type = ft_integer;
1645
1854
  fd->len = (ushort_td)4;
1646
1855
  def->updateTableDef(id);
1647
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 1 stat = " << def->stat());
1856
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
1857
+ "updateTableDef 1 stat = " << def->stat());
1648
1858
 
1649
1859
  fd = def->insertField(id, 1);
1650
1860
  fd->setName(_T("name"));
@@ -1658,12 +1868,12 @@ void stringFileterCreateTable(database* db, int id, const _TCHAR* name, uchar_td
1658
1868
  if (fd->blobLenBytes())
1659
1869
  {
1660
1870
  fd->len = 12; // 8+4
1661
-
1662
1871
  }
1663
1872
 
1664
1873
  fd->keylen = fd->len;
1665
1874
  def->updateTableDef(id);
1666
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 2 stat = " << def->stat());
1875
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
1876
+ "updateTableDef 2 stat = " << def->stat());
1667
1877
 
1668
1878
  fd = def->insertField(id, 2);
1669
1879
  fd->setName(_T("namew"));
@@ -1677,7 +1887,6 @@ void stringFileterCreateTable(database* db, int id, const _TCHAR* name, uchar_td
1677
1887
  if (fd->blobLenBytes())
1678
1888
  {
1679
1889
  fd->len = 12; // 8+4
1680
-
1681
1890
  }
1682
1891
  fd->keylen = fd->len;
1683
1892
  def->updateTableDef(id);
@@ -1708,18 +1917,18 @@ void stringFileterCreateTable(database* db, int id, const _TCHAR* name, uchar_td
1708
1917
  kd->segmentCount = 1;
1709
1918
  def->updateTableDef(id);
1710
1919
  BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 6");
1711
-
1712
1920
  }
1713
1921
 
1714
1922
  void doInsertStringFileter(table* tb)
1715
1923
  {
1716
- tb->beginBulkInsert(BULKBUFSIZE);
1924
+
1717
1925
  tb->clearBuffer();
1718
1926
  int id = 1;
1719
1927
  tb->setFV(_T("id"), id);
1720
1928
  tb->setFV(_T("name"), _T("あいうえおかきくこ"));
1721
1929
  tb->setFV(_T("namew"), _T("あいうえおかきくこ"));
1722
1930
  tb->insert();
1931
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "InsertStringFileter 1");
1723
1932
 
1724
1933
  tb->clearBuffer();
1725
1934
  id = 2;
@@ -1727,14 +1936,16 @@ void doInsertStringFileter(table* tb)
1727
1936
  tb->setFV(_T("name"), _T("A123456"));
1728
1937
  tb->setFV(_T("namew"), _T("A123456"));
1729
1938
  tb->insert();
1939
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "InsertStringFileter 2");
1730
1940
 
1731
-
1941
+ tb->beginBulkInsert(BULKBUFSIZE);
1732
1942
  tb->clearBuffer();
1733
1943
  id = 3;
1734
1944
  tb->setFV(_T("id"), id);
1735
1945
  tb->setFV(_T("name"), _T("あいがあればOKです"));
1736
1946
  tb->setFV(_T("namew"), _T("あいがあればOKです"));
1737
1947
  tb->insert();
1948
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "InsertStringFileter 3");
1738
1949
 
1739
1950
  tb->clearBuffer();
1740
1951
  id = 4;
@@ -1742,6 +1953,7 @@ void doInsertStringFileter(table* tb)
1742
1953
  tb->setFV(_T("name"), _T("おはようございます"));
1743
1954
  tb->setFV(_T("namew"), _T("おはようございます"));
1744
1955
  tb->insert();
1956
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "InsertStringFileter 3");
1745
1957
 
1746
1958
  tb->clearBuffer();
1747
1959
  id = 5;
@@ -1749,7 +1961,9 @@ void doInsertStringFileter(table* tb)
1749
1961
  tb->setFV(_T("name"), _T("おめでとうございます。"));
1750
1962
  tb->setFV(_T("namew"), _T("おめでとうございます。"));
1751
1963
  tb->insert();
1964
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "InsertStringFileter 4");
1752
1965
  tb->commitBulkInsert();
1966
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "InsertStringFileter 5");
1753
1967
  }
1754
1968
 
1755
1969
  void doTestReadSF(table* tb)
@@ -1760,28 +1974,39 @@ void doTestReadSF(table* tb)
1760
1974
  tb->setFV(_T("id"), id);
1761
1975
  tb->seek();
1762
1976
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1763
- BOOST_CHECK_MESSAGE(_tstring(_T("あいうえおかきくこ")) == _tstring(tb->getFVstr(1)), "doTestReadSF2");
1977
+ BOOST_CHECK_MESSAGE(_tstring(_T("あいうえおかきくこ")) ==
1978
+ _tstring(tb->getFVstr(1)),
1979
+ "doTestReadSF2");
1980
+ BOOST_CHECK_MESSAGE(_tstring(_T("あいうえおかきくこ")) ==
1981
+ _tstring(tb->getFVstr(1)),
1982
+ "doTestReadSF2b");
1764
1983
 
1765
1984
  id = 3;
1766
1985
  tb->setFV(_T("id"), id);
1767
1986
  tb->seek();
1768
1987
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF3");
1769
- BOOST_CHECK_MESSAGE(_tstring(_T("あいがあればOKです")) == _tstring(tb->getFVstr(1)), "doTestReadSF4");
1988
+ BOOST_CHECK_MESSAGE(_tstring(_T("あいがあればOKです")) ==
1989
+ _tstring(tb->getFVstr(1)),
1990
+ "doTestReadSF4");
1991
+ BOOST_CHECK_MESSAGE(_tstring(_T("あいがあればOKです")) ==
1992
+ _tstring(tb->getFVstr(2)),
1993
+ "doTestReadSF4b");
1770
1994
 
1771
1995
  tb->setKeyNum(1);
1772
1996
  tb->clearBuffer();
1773
1997
  tb->setFV(_T("name"), _T("A123456"));
1774
1998
  tb->seek();
1775
1999
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF5");
1776
- BOOST_CHECK_MESSAGE(_tstring(_T("A123456")) == _tstring(tb->getFVstr(1)), "doTestReadSF6");
2000
+ BOOST_CHECK_MESSAGE(_tstring(_T("A123456")) == _tstring(tb->getFVstr(1)),
2001
+ "doTestReadSF6");
1777
2002
 
1778
2003
  tb->setKeyNum(2);
1779
2004
  tb->clearBuffer();
1780
2005
  tb->setFV(_T("namew"), _T("A123456"));
1781
2006
  tb->seek();
1782
2007
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF5");
1783
- BOOST_CHECK_MESSAGE(_tstring(_T("A123456")) == _tstring(tb->getFVstr(2)), "doTestReadSF6");
1784
-
2008
+ BOOST_CHECK_MESSAGE(_tstring(_T("A123456")) == _tstring(tb->getFVstr(2)),
2009
+ "doTestReadSF6");
1785
2010
  }
1786
2011
 
1787
2012
  void doTestSF(table* tb)
@@ -1789,33 +2014,38 @@ void doTestSF(table* tb)
1789
2014
  tb->setKeyNum(0);
1790
2015
  tb->clearBuffer();
1791
2016
 
1792
-
1793
-
1794
2017
  tb->setFilter(_T("name = 'あい*'"), 0, 10);
1795
2018
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1796
2019
  tb->seekFirst();
1797
2020
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1798
2021
  tb->findNext(false);
1799
2022
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1800
- BOOST_CHECK_MESSAGE(_tstring(_T("あいうえおかきくこ")) == _tstring(tb->getFVstr(1)), "doTestReadSF2");
2023
+ BOOST_CHECK_MESSAGE(_tstring(_T("あいうえおかきくこ")) ==
2024
+ _tstring(tb->getFVstr(1)),
2025
+ "doTestReadSF2");
1801
2026
  BOOST_CHECK_MESSAGE(2 == (int)tb->recordCount(), "doTestReadSF2");
1802
2027
 
1803
-
1804
2028
  tb->setFilter(_T("name <> 'あい*'"), 0, 10);
1805
2029
  BOOST_CHECK_MESSAGE(3 == (int)tb->recordCount(), "doTestReadSF2");
1806
2030
  tb->clearBuffer();
2031
+ tb->setFilter(_T("name <> 'あい*'"), 0, 10);
1807
2032
  tb->seekFirst();
1808
2033
  tb->findNext(false);
1809
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1810
- BOOST_CHECK_MESSAGE(_tstring(_T("A123456")) == _tstring(tb->getFVstr(2)), "doTestReadSF1");
2034
+ BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1 stat = " << tb->stat());
2035
+ BOOST_CHECK_MESSAGE(_tstring(_T("A123456")) == _tstring(tb->getFVstr(2)),
2036
+ "doTestReadSF1");
1811
2037
 
1812
2038
  tb->findNext();
1813
2039
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1814
- BOOST_CHECK_MESSAGE(_tstring(_T("おはようございます")) == _tstring(tb->getFVstr(2)), "doTestReadSF1");
2040
+ BOOST_CHECK_MESSAGE(_tstring(_T("おはようございます")) ==
2041
+ _tstring(tb->getFVstr(2)),
2042
+ "doTestReadSF1");
1815
2043
 
1816
2044
  tb->findNext();
1817
2045
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1818
- BOOST_CHECK_MESSAGE(_tstring(_T("おめでとうございます。")) == _tstring(tb->getFVstr(2)), "doTestReadSF1");
2046
+ BOOST_CHECK_MESSAGE(_tstring(_T("おめでとうございます。")) ==
2047
+ _tstring(tb->getFVstr(2)),
2048
+ "doTestReadSF1");
1819
2049
  tb->findNext();
1820
2050
  BOOST_CHECK_MESSAGE(9 == tb->stat(), "doTestReadSF1");
1821
2051
 
@@ -1823,15 +2053,20 @@ void doTestSF(table* tb)
1823
2053
  tb->seekLast();
1824
2054
  tb->findPrev(false);
1825
2055
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1826
- BOOST_CHECK_MESSAGE(_tstring(_T("おめでとうございます。")) == _tstring(tb->getFVstr(2)), "doTestReadSF1");
2056
+ BOOST_CHECK_MESSAGE(_tstring(_T("おめでとうございます。")) ==
2057
+ _tstring(tb->getFVstr(2)),
2058
+ "doTestReadSF1");
1827
2059
 
1828
2060
  tb->findPrev();
1829
2061
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1830
- BOOST_CHECK_MESSAGE(_tstring(_T("おはようございます")) == _tstring(tb->getFVstr(2)), "doTestReadSF1");
2062
+ BOOST_CHECK_MESSAGE(_tstring(_T("おはようございます")) ==
2063
+ _tstring(tb->getFVstr(2)),
2064
+ "doTestReadSF1");
1831
2065
 
1832
2066
  tb->findPrev(false);
1833
2067
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestReadSF1");
1834
- BOOST_CHECK_MESSAGE(_tstring(_T("A123456")) == _tstring(tb->getFVstr(2)), "doTestReadSF1");
2068
+ BOOST_CHECK_MESSAGE(_tstring(_T("A123456")) == _tstring(tb->getFVstr(2)),
2069
+ "doTestReadSF1");
1835
2070
 
1836
2071
  tb->findPrev();
1837
2072
  BOOST_CHECK_MESSAGE(9 == tb->stat(), "doTestReadSF1");
@@ -1842,12 +2077,12 @@ void doTestSF(table* tb)
1842
2077
  tb->setFilter(_T("name <> ''"), 0, 10);
1843
2078
  BOOST_CHECK_MESSAGE(5 == (int)tb->recordCount(), "doTestReadSF2");
1844
2079
 
1845
- //test setFilter don't change field value
2080
+ // test setFilter don't change field value
1846
2081
  tb->clearBuffer();
1847
2082
  tb->setFV(_T("name"), _T("ABCDE"));
1848
2083
  tb->setFilter(_T("name = 'あい'"), 0, 10);
1849
- BOOST_CHECK_MESSAGE(_tstring(_T("ABCDE")) == _tstring(tb->getFVstr(1)), "doTestReadSF2 field value");
1850
-
2084
+ BOOST_CHECK_MESSAGE(_tstring(_T("ABCDE")) == _tstring(tb->getFVstr(1)),
2085
+ "doTestReadSF2 field value");
1851
2086
  }
1852
2087
 
1853
2088
  void doTestUpdateSF(table* tb)
@@ -1856,31 +2091,41 @@ void doTestUpdateSF(table* tb)
1856
2091
  tb->setKeyNum(0);
1857
2092
  tb->clearBuffer();
1858
2093
  tb->seekFirst();
1859
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdateSF stat = " << tb->stat());
2094
+ BOOST_CHECK_MESSAGE(0 == tb->stat(),
2095
+ "doTestUpdateSF stat = " << tb->stat());
1860
2096
  tb->setFV(_T("name"), _T("ABCDE"));
1861
2097
  tb->setFV(_T("namew"), _T("ABCDEW"));
1862
2098
  tb->update();
1863
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdateSF stat = " << tb->stat());
2099
+ BOOST_CHECK_MESSAGE(0 == tb->stat(),
2100
+ "doTestUpdateSF stat = " << tb->stat());
1864
2101
  tb->seekNext();
1865
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdateSF stat = " << tb->stat());
2102
+ BOOST_CHECK_MESSAGE(0 == tb->stat(),
2103
+ "doTestUpdateSF stat = " << tb->stat());
1866
2104
 
1867
2105
  tb->setFV(_T("name"), _T("ABCDE2"));
1868
2106
  tb->setFV(_T("namew"), _T("ABCDEW2"));
1869
2107
  tb->update();
1870
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdateSF stat = " << tb->stat());
2108
+ BOOST_CHECK_MESSAGE(0 == tb->stat(),
2109
+ "doTestUpdateSF stat = " << tb->stat());
1871
2110
 
1872
2111
  tb->seekFirst();
1873
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdateSF stat = " << tb->stat());
1874
- BOOST_CHECK_MESSAGE(_tstring(_T("ABCDE")) == _tstring(tb->getFVstr(1)), "doTestUpdateSF");
1875
- BOOST_CHECK_MESSAGE(_tstring(_T("ABCDEW")) == _tstring(tb->getFVstr(2)), "doTestUpdateSF" );
2112
+ BOOST_CHECK_MESSAGE(0 == tb->stat(),
2113
+ "doTestUpdateSF stat = " << tb->stat());
2114
+ BOOST_CHECK_MESSAGE(_tstring(_T("ABCDE")) == _tstring(tb->getFVstr(1)),
2115
+ "doTestUpdateSF");
2116
+ BOOST_CHECK_MESSAGE(_tstring(_T("ABCDEW")) == _tstring(tb->getFVstr(2)),
2117
+ "doTestUpdateSF");
1876
2118
  tb->seekNext();
1877
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdateSF stat = " << tb->stat());
1878
- BOOST_CHECK_MESSAGE(_tstring(_T("ABCDE2")) == _tstring(tb->getFVstr(1)), "doTestUpdateSF");
1879
- BOOST_CHECK_MESSAGE(_tstring(_T("ABCDEW2")) == _tstring(tb->getFVstr(2)), "doTestUpdateSF" );
1880
-
2119
+ BOOST_CHECK_MESSAGE(0 == tb->stat(),
2120
+ "doTestUpdateSF stat = " << tb->stat());
2121
+ BOOST_CHECK_MESSAGE(_tstring(_T("ABCDE2")) == _tstring(tb->getFVstr(1)),
2122
+ "doTestUpdateSF");
2123
+ BOOST_CHECK_MESSAGE(_tstring(_T("ABCDEW2")) == _tstring(tb->getFVstr(2)),
2124
+ "doTestUpdateSF");
1881
2125
  }
1882
2126
 
1883
- void doTestStringFileter(database* db, int id, const _TCHAR* name, uchar_td type, uchar_td type2)
2127
+ void doTestStringFileter(database* db, int id, const _TCHAR* name,
2128
+ uchar_td type, uchar_td type2)
1884
2129
  {
1885
2130
 
1886
2131
  stringFileterCreateTable(db, id, name, type, type2);
@@ -1900,18 +2145,19 @@ void testStringFileter(database* db)
1900
2145
  BOOST_CHECK_MESSAGE(0 == db->stat(), "createNewDataBase");
1901
2146
 
1902
2147
  db->open(makeUri(PROTOCOL, HOSTNAME, _T("testString"), BDFNAME), 0, 0);
1903
- BOOST_CHECK_MESSAGE(0 == db->stat(), "createNewDataBase 1 stat = " << db->stat());
2148
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
2149
+ "createNewDataBase 1 stat = " << db->stat());
1904
2150
 
1905
2151
  doTestStringFileter(db, 1, _T("zstring"), ft_zstring, ft_wzstring);
1906
2152
  if (isUtf16leSupport(db))
1907
- doTestStringFileter(db, 2, _T("myvarchar"), ft_myvarchar, ft_mywvarchar);
2153
+ doTestStringFileter(db, 2, _T("myvarchar"), ft_myvarchar,
2154
+ ft_mywvarchar);
1908
2155
  else
1909
2156
  doTestStringFileter(db, 2, _T("myvarchar"), ft_myvarchar, ft_myvarchar);
1910
2157
 
1911
2158
  doTestStringFileter(db, 3, _T("mytext"), ft_mytext, ft_myblob);
1912
2159
 
1913
2160
  db->close();
1914
-
1915
2161
  }
1916
2162
 
1917
2163
  void testDropDataBaseStr(database* db)
@@ -1919,21 +2165,16 @@ void testDropDataBaseStr(database* db)
1919
2165
  db->open(makeUri(PROTOCOL, HOSTNAME, _T("testString"), BDFNAME), 0, 0);
1920
2166
  BOOST_CHECK_MESSAGE(0 == db->stat(), "createNewDataBase 1");
1921
2167
  db->drop();
1922
- BOOST_CHECK_MESSAGE(0 == db->stat(), "DropDataBaseTestString stat=" << db->stat());
1923
-
2168
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
2169
+ "DropDataBaseTestString stat=" << db->stat());
1924
2170
  }
1925
2171
  // ------------------------------------------------------------------------
1926
2172
 
1927
- _TCHAR dbNmae[50] =
1928
- {_T("テスト")};
1929
- _TCHAR bdfNmae[50] =
1930
- {_T("構成.bdf")};
1931
- _TCHAR tableNmae[50] =
1932
- {_T("漢字テーブル")};
1933
- _TCHAR fdName1[50] =
1934
- {_T("番号")};
1935
- _TCHAR fdName2[50] =
1936
- {_T("名前")};
2173
+ _TCHAR dbNmae[50] = { _T("テスト") };
2174
+ _TCHAR bdfNmae[50] = { _T("構成.bdf") };
2175
+ _TCHAR tableNmae[50] = { _T("漢字テーブル") };
2176
+ _TCHAR fdName1[50] = { _T("番号") };
2177
+ _TCHAR fdName2[50] = { _T("名前") };
1937
2178
 
1938
2179
  bool nameInited = false;
1939
2180
 
@@ -1957,7 +2198,6 @@ void initKanjiName()
1957
2198
  nameInited = true;
1958
2199
  }
1959
2200
  #endif
1960
-
1961
2201
  }
1962
2202
 
1963
2203
  void testDropDatabaseKanji(database* db)
@@ -1978,10 +2218,13 @@ void testKnajiCreateSchema(database* db)
1978
2218
  testDropDatabaseKanji(db);
1979
2219
  db->create(makeUri(PROTOCOL, HOSTNAME, dbNmae, bdfNmae));
1980
2220
  }
1981
- BOOST_CHECK_MESSAGE(0 == db->stat(), "createKanjiDatabase stat = " << db->stat());
2221
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
2222
+ "createKanjiDatabase stat = " << db->stat());
1982
2223
  // create table
1983
- db->open(makeUri(PROTOCOL, HOSTNAME, dbNmae, bdfNmae), TYPE_SCHEMA_BDF, TD_OPEN_NORMAL);
1984
- BOOST_CHECK_MESSAGE(0 == db->stat(), "createKanjiDatabase 1 stat = " << db->stat());
2224
+ db->open(makeUri(PROTOCOL, HOSTNAME, dbNmae, bdfNmae), TYPE_SCHEMA_BDF,
2225
+ TD_OPEN_NORMAL);
2226
+ BOOST_CHECK_MESSAGE(0 == db->stat(),
2227
+ "createKanjiDatabase 1 stat = " << db->stat());
1985
2228
 
1986
2229
  dbdef* def = db->dbDef();
1987
2230
  if (def)
@@ -2000,21 +2243,24 @@ void testKnajiCreateSchema(database* db)
2000
2243
  td.pageSize = 2048;
2001
2244
 
2002
2245
  def->insertTable(&td);
2003
- BOOST_CHECK_MESSAGE(0 == def->stat(), "insertTable stat = " << def->stat());
2246
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
2247
+ "insertTable stat = " << def->stat());
2004
2248
 
2005
2249
  fielddef* fd = def->insertField(1, 0);
2006
2250
  fd->setName(fdName1);
2007
2251
  fd->type = ft_integer;
2008
2252
  fd->len = (ushort_td)4;
2009
2253
  def->updateTableDef(1);
2010
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 1 stat = " << def->stat());
2254
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
2255
+ "updateTableDef 1 stat = " << def->stat());
2011
2256
 
2012
2257
  fd = def->insertField(1, 1);
2013
2258
  fd->setName(fdName2);
2014
2259
  fd->type = ft_zstring;
2015
2260
  fd->len = (ushort_td)33;
2016
2261
  def->updateTableDef(1);
2017
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 2 stat = " << def->stat());
2262
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
2263
+ "updateTableDef 2 stat = " << def->stat());
2018
2264
 
2019
2265
  keydef* kd = def->insertKey(1, 0);
2020
2266
  kd->segments[0].fieldNum = 0;
@@ -2023,15 +2269,16 @@ void testKnajiCreateSchema(database* db)
2023
2269
  kd->segmentCount = 1;
2024
2270
 
2025
2271
  def->updateTableDef(1);
2026
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 3 stat = " << def->stat());
2027
-
2272
+ BOOST_CHECK_MESSAGE(0 == def->stat(),
2273
+ "updateTableDef 3 stat = " << def->stat());
2028
2274
  }
2029
2275
  }
2030
2276
 
2031
2277
  table* openKnajiTable(database* db)
2032
2278
  {
2033
2279
 
2034
- db->open(makeUri(PROTOCOL, HOSTNAME, dbNmae, bdfNmae), TYPE_SCHEMA_BDF, TD_OPEN_NORMAL);
2280
+ db->open(makeUri(PROTOCOL, HOSTNAME, dbNmae, bdfNmae), TYPE_SCHEMA_BDF,
2281
+ TD_OPEN_NORMAL);
2035
2282
  BOOST_CHECK_MESSAGE(0 == db->stat(), "openKnajiTable 1");
2036
2283
  table* tb = db->openTable(tableNmae);
2037
2284
  BOOST_CHECK_MESSAGE(0 == db->stat(), "openKnajiTable 2");
@@ -2053,8 +2300,7 @@ void testInsertKanji(database* db)
2053
2300
  tb->setFV(fdName2, _T("矢口"));
2054
2301
  tb->insert();
2055
2302
  BOOST_CHECK_MESSAGE(0 == tb->stat(), "insert 2");
2056
- tb->release();
2057
-
2303
+ tb->release();
2058
2304
  }
2059
2305
 
2060
2306
  void testGetEqualKanji(database* db)
@@ -2064,14 +2310,15 @@ void testGetEqualKanji(database* db)
2064
2310
  tb->setFV((short)0, 1);
2065
2311
  tb->seek();
2066
2312
  BOOST_CHECK_MESSAGE(1 == tb->getFVint(fdName1), "GetEqual id 1");
2067
- BOOST_CHECK_MESSAGE(_tcscmp(tb->getFVstr(fdName2), _T("小坂")) == 0, "GetEqual name 2");
2313
+ BOOST_CHECK_MESSAGE(_tcscmp(tb->getFVstr(fdName2), _T("小坂")) == 0,
2314
+ "GetEqual name 2");
2068
2315
 
2069
2316
  tb->setFV((short)0, 2);
2070
2317
  tb->seek();
2071
2318
  BOOST_CHECK_MESSAGE(2 == tb->getFVint(fdName1), "GetEqual id 2");
2072
- BOOST_CHECK_MESSAGE(_tcscmp(tb->getFVstr(fdName2), _T("矢口")) == 0, "GetEqual name 2");
2073
- tb->release();
2074
-
2319
+ BOOST_CHECK_MESSAGE(_tcscmp(tb->getFVstr(fdName2), _T("矢口")) == 0,
2320
+ "GetEqual name 2");
2321
+ tb->release();
2075
2322
  }
2076
2323
 
2077
2324
  // ------------------------------------------------------------------------
@@ -2086,7 +2333,7 @@ void testResultField(database* db)
2086
2333
 
2087
2334
  size_t len = rf.writeBuffer(0, true) - (unsigned char*)0;
2088
2335
  BOOST_CHECK_MESSAGE(len == 4, " resultField.writeBuffer");
2089
-
2336
+ tb->release();
2090
2337
  }
2091
2338
 
2092
2339
  void testResultDef()
@@ -2099,11 +2346,8 @@ void testResultDef()
2099
2346
 
2100
2347
  size_t len = rd.writeBuffer(0, true) - (unsigned char*)0;
2101
2348
  BOOST_CHECK_MESSAGE(len == 4, " resultDef.writeBuffer");
2102
-
2103
-
2104
2349
  }
2105
2350
 
2106
-
2107
2351
  void testLogic(database* db)
2108
2352
  {
2109
2353
  table* tb = openTable(db);
@@ -2111,71 +2355,70 @@ void testLogic(database* db)
2111
2355
 
2112
2356
  lc.setParam(tb, _T("name"), _T("="), _T("abc"), eCend);
2113
2357
 
2114
-
2115
2358
  BOOST_CHECK_MESSAGE(lc.type == ft_zstring, " logic.type");
2116
2359
  BOOST_CHECK_MESSAGE(lc.len == 33, " logic.len");
2117
2360
  BOOST_CHECK_MESSAGE(lc.pos == 4, " logic.pos");
2118
2361
  BOOST_CHECK_MESSAGE(lc.logType == 1, " logic.logType");
2119
2362
  BOOST_CHECK_MESSAGE(lc.opr == eCend, " logic.opr");
2120
- BOOST_CHECK_MESSAGE(strcmp((char*)lc.data, "abc")==0, " logic.data");
2363
+ BOOST_CHECK_MESSAGE(strcmp((char*)lc.data, "abc") == 0, " logic.data");
2121
2364
 
2122
2365
  size_t len = lc.writeBuffer(0, true, false) - (unsigned char*)0;
2123
- BOOST_CHECK_MESSAGE(len == 7+33, " logic.writeBuffer");
2366
+ BOOST_CHECK_MESSAGE(len == 7 + 33, " logic.writeBuffer");
2124
2367
 
2125
- //compField invalid filed name
2368
+ // compField invalid filed name
2126
2369
  bool ret = lc.setParam(tb, _T("name"), _T("="), _T("1"), eCend, true);
2127
2370
  BOOST_CHECK_MESSAGE(ret == false, " logic invalid filed name");
2128
2371
 
2129
- //compField
2372
+ // compField
2130
2373
  ret = lc.setParam(tb, _T("name"), _T("="), _T("id"), eCend, true);
2131
2374
  BOOST_CHECK_MESSAGE(ret == true, " logic filed name");
2132
2375
  BOOST_CHECK_MESSAGE(lc.type == ft_zstring, " logic.type");
2133
2376
  BOOST_CHECK_MESSAGE(lc.len == 33, " logic.len");
2134
2377
  BOOST_CHECK_MESSAGE(lc.pos == 4, " logic.pos");
2135
- BOOST_CHECK_MESSAGE(lc.logType == 1+CMPLOGICAL_FIELD, " logic.logType compField");
2378
+ BOOST_CHECK_MESSAGE(lc.logType == 1 + CMPLOGICAL_FIELD,
2379
+ " logic.logType compField");
2136
2380
  BOOST_CHECK_MESSAGE(lc.opr == eCend, " logic.opr");
2137
2381
  BOOST_CHECK_MESSAGE(*((short*)lc.data) == 0, " logic.data");
2138
2382
  len = lc.writeBuffer(0, true, false) - (unsigned char*)0;
2139
- BOOST_CHECK_MESSAGE(len == 7+2, " logic.writeBuffer");
2383
+ BOOST_CHECK_MESSAGE(len == 7 + 2, " logic.writeBuffer");
2140
2384
 
2141
- //invalid filed name
2385
+ // invalid filed name
2142
2386
  ret = lc.setParam(tb, _T("name1"), _T("="), _T("id"), eCend, true);
2143
2387
  BOOST_CHECK_MESSAGE(ret == false, " logic invalid filed name2");
2144
2388
 
2145
- //wildcard
2146
- ret = lc.setParam(tb, _T("name"), _T("="), _T("abc*"), eCend, false);
2389
+ // wildcard
2390
+ lc.setParam(tb, _T("name"), _T("="), _T("abc*"), eCend, false);
2147
2391
  BOOST_CHECK_MESSAGE(lc.type == ft_zstring, " logic.type");
2148
2392
  BOOST_CHECK_MESSAGE(lc.len == 3, " logic.len");
2149
2393
  BOOST_CHECK_MESSAGE(lc.pos == 4, " logic.pos");
2150
2394
  BOOST_CHECK_MESSAGE(lc.logType == 1, " logic.logType");
2151
2395
  BOOST_CHECK_MESSAGE(lc.opr == eCend, " logic.opr");
2152
- BOOST_CHECK_MESSAGE(strcmp((char*)lc.data, "abc")==0, " logic.data");
2396
+ BOOST_CHECK_MESSAGE(strcmp((char*)lc.data, "abc") == 0, " logic.data");
2153
2397
 
2154
2398
  len = lc.writeBuffer(0, true, false) - (unsigned char*)0;
2155
- BOOST_CHECK_MESSAGE(len == 7+3, " logic.writeBuffer");
2399
+ BOOST_CHECK_MESSAGE(len == 7 + 3, " logic.writeBuffer");
2156
2400
 
2157
- ret = lc.setParam(tb, _T("name"), _T("="), _T("漢字*"), eCend, false);
2158
- BOOST_CHECK_MESSAGE(strcmp((char*)lc.data, "漢字")==0, " logic.data");
2401
+ lc.setParam(tb, _T("name"), _T("="), _T("漢字*"), eCend, false);
2402
+ BOOST_CHECK_MESSAGE(strcmp((char*)lc.data, "漢字") == 0, " logic.data");
2159
2403
 
2160
2404
  len = lc.writeBuffer(0, true, false) - (unsigned char*)0;
2161
- BOOST_CHECK_MESSAGE(len == 7 + (_tcslen(_T("漢字"))*sizeof(_TCHAR))
2162
- , " logic.writeBuffer len =" << len);
2405
+ BOOST_CHECK_MESSAGE(len == 7 + (_tcslen(_T("漢字")) * sizeof(_TCHAR)),
2406
+ " logic.writeBuffer len =" << len);
2163
2407
 
2164
-
2165
- //combine
2166
- ret = lc.setParam(tb, _T("name"), _T("="), _T("abc*"), eCor, false);
2408
+ // combine
2409
+ lc.setParam(tb, _T("name"), _T("="), _T("abc*"), eCor, false);
2167
2410
  BOOST_CHECK_MESSAGE(lc.opr == 2, " logic.opr or");
2168
- ret = lc.setParam(tb, _T("name"), _T("="), _T("abc*"), eCand, false);
2411
+ lc.setParam(tb, _T("name"), _T("="), _T("abc*"), eCand, false);
2169
2412
  BOOST_CHECK_MESSAGE(lc.opr == 1, " logic.opr and");
2170
2413
 
2171
- //logType
2414
+ // logType
2172
2415
  ret = lc.setParam(tb, _T("name"), _T("!="), _T("abc*"), eCend, false);
2173
2416
  BOOST_CHECK_MESSAGE(lc.logType == 255, " logic.logType !=");
2174
2417
  BOOST_CHECK_MESSAGE(ret == false, " logic invalid logType");
2175
2418
 
2176
- //canJoin
2419
+ // canJoin
2177
2420
 
2178
- //zstring is cannot join
2421
+ // zstring is cannot join
2179
2422
  lc.setParam(tb, _T("name"), _T("="), _T("1"), eCand, false);
2180
2423
  BOOST_CHECK_MESSAGE(lc.canJoin(false) == false, " logic canJoin");
2181
2424
  BOOST_CHECK_MESSAGE(lc.canJoin(true) == false, " logic canJoin");
@@ -2191,7 +2434,6 @@ void testLogic(database* db)
2191
2434
  BOOST_CHECK_MESSAGE(lc.canJoin(true) == false, " logic canJoin");
2192
2435
  BOOST_CHECK_MESSAGE(lc.canJoin(false) == true, " logic canJoin");
2193
2436
 
2194
-
2195
2437
  lc.opr = eCand;
2196
2438
 
2197
2439
  logic lc2;
@@ -2203,7 +2445,7 @@ void testLogic(database* db)
2203
2445
  lc2.pos = 4;
2204
2446
  BOOST_CHECK_MESSAGE(lc.isNextFiled(&lc2) == true, " logic isNextFiled");
2205
2447
 
2206
- //join
2448
+ // join
2207
2449
  lc.joinAfter(&lc2);
2208
2450
  BOOST_CHECK_MESSAGE(lc.len == 8, " logic joinAfter");
2209
2451
 
@@ -2212,96 +2454,109 @@ void testLogic(database* db)
2212
2454
  header hd;
2213
2455
  len = hd.writeBuffer(0, true) - (unsigned char*)0;
2214
2456
  BOOST_CHECK_MESSAGE(len == 8, " header.writeBuffer");
2215
-
2216
-
2457
+ tb->release();
2217
2458
  }
2218
2459
 
2219
-
2220
-
2221
2460
  void testQuery()
2222
2461
  {
2223
2462
  queryBase q;
2224
2463
  q.queryString(_T("id = 0 and name = 'Abc efg'"));
2225
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("id = '0' and name = 'Abc efg'")
2226
- , "queryString");
2227
-
2464
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) ==
2465
+ _T("id = '0' and name = 'Abc efg'"),
2466
+ "queryString");
2467
+
2228
2468
  q.queryString(_T(""));
2229
2469
  q.addLogic(_T("id"), _T("="), _T("0"));
2230
2470
  q.addLogic(_T("and"), _T("name"), _T("="), _T("Abc efg"));
2231
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("id = '0' and name = 'Abc efg'"), "queryString");
2232
-
2471
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) ==
2472
+ _T("id = '0' and name = 'Abc efg'"),
2473
+ "queryString");
2474
+
2233
2475
  q.queryString(_T("select id,name id = 0 AND name = 'Abc&' efg'"));
2234
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name id = '0' AND name = 'Abc&' efg'")
2235
- , "queryString");
2236
-
2476
+ BOOST_CHECK_MESSAGE(
2477
+ _tstring(q.toString()) ==
2478
+ _T("select id,name id = '0' AND name = 'Abc&' efg'"),
2479
+ "queryString");
2480
+
2237
2481
  q.queryString(_T(""));
2238
2482
  q.addField(_T("id"));
2239
2483
  q.addField(_T("name"));
2240
2484
  q.addLogic(_T("id"), _T("="), _T("0"));
2241
2485
  q.addLogic(_T("AND"), _T("name"), _T("="), _T("Abc' efg"));
2242
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name id = '0' AND name = 'Abc&' efg'")
2243
- , "queryString");
2244
-
2486
+ BOOST_CHECK_MESSAGE(
2487
+ _tstring(q.toString()) ==
2488
+ _T("select id,name id = '0' AND name = 'Abc&' efg'"),
2489
+ "queryString");
2490
+
2245
2491
  q.queryString(_T("select id,name id = 0 AND name = 'Abc&& efg'"));
2246
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name id = '0' AND name = 'Abc&& efg'")
2247
- , "queryString");
2248
-
2492
+ BOOST_CHECK_MESSAGE(
2493
+ _tstring(q.toString()) ==
2494
+ _T("select id,name id = '0' AND name = 'Abc&& efg'"),
2495
+ "queryString");
2496
+
2249
2497
  q.queryString(_T(""));
2250
2498
  q.addField(_T("id"));
2251
2499
  q.addField(_T("name"));
2252
2500
  q.addLogic(_T("id"), _T("="), _T("0"));
2253
2501
  q.addLogic(_T("AND"), _T("name"), _T("="), _T("Abc& efg"));
2254
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name id = '0' AND name = 'Abc&& efg'")
2255
- , "queryString");
2256
-
2502
+ BOOST_CHECK_MESSAGE(
2503
+ _tstring(q.toString()) ==
2504
+ _T("select id,name id = '0' AND name = 'Abc&& efg'"),
2505
+ "queryString");
2506
+
2257
2507
  q.queryString(_T("*"));
2258
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("*"), "queryString");
2259
-
2508
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("*"), "queryString");
2509
+
2260
2510
  q.queryString(_T(""));
2261
2511
  q.all();
2262
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("*"), "queryString");
2263
-
2512
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("*"), "queryString");
2513
+
2264
2514
  q.queryString(_T("Select id,name id = 2"));
2265
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name id = '2'")
2266
- , "queryString");
2267
-
2515
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name id = '2'"),
2516
+ "queryString");
2517
+
2268
2518
  q.queryString(_T(""));
2269
2519
  q.addField(_T("id"));
2270
2520
  q.addField(_T("name"));
2271
2521
  q.addLogic(_T("id"), _T("="), _T("2"));
2272
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name id = '2'")
2273
- , "queryString");
2274
-
2522
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name id = '2'"),
2523
+ "queryString");
2524
+
2275
2525
  q.queryString(_T("SELECT id,name,fc id = 2"));
2276
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name,fc id = '2'")
2277
- , "queryString");
2278
-
2526
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) ==
2527
+ _T("select id,name,fc id = '2'"),
2528
+ "queryString");
2529
+
2279
2530
  q.queryString(_T(""));
2280
2531
  q.addField(_T("id"));
2281
2532
  q.addField(_T("name"));
2282
2533
  q.addField(_T("fc"));
2283
2534
  q.addLogic(_T("id"), _T("="), _T("2"));
2284
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name,fc id = '2'")
2285
- , "queryString");
2286
-
2535
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) ==
2536
+ _T("select id,name,fc id = '2'"),
2537
+ "queryString");
2538
+
2287
2539
  q.queryString(_T("select id,name,fc id = 2 and name = '3'"));
2288
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name,fc id = '2' and name = '3'")
2289
- , "queryString");
2290
-
2540
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) ==
2541
+ _T("select id,name,fc id = '2' and name = '3'"),
2542
+ "queryString");
2543
+
2291
2544
  q.queryString(_T(""));
2292
2545
  q.addField(_T("id"));
2293
2546
  q.addField(_T("name"));
2294
2547
  q.addField(_T("fc"));
2295
2548
  q.addLogic(_T("id"), _T("="), _T("2"));
2296
2549
  q.addLogic(_T("and"), _T("name"), _T("="), _T("3"));
2297
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name,fc id = '2' and name = '3'")
2298
- , "queryString");
2299
-
2300
- //IN include
2550
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) ==
2551
+ _T("select id,name,fc id = '2' and name = '3'"),
2552
+ "queryString");
2553
+
2554
+ // IN include
2301
2555
  q.queryString(_T("select id,name,fc IN '1','2','3'"));
2302
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name,fc in '1','2','3'")
2303
- , "queryString");
2304
-
2556
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) ==
2557
+ _T("select id,name,fc in '1','2','3'"),
2558
+ "queryString");
2559
+
2305
2560
  q.queryString(_T(""));
2306
2561
  q.addField(_T("id"));
2307
2562
  q.addField(_T("name"));
@@ -2309,107 +2564,610 @@ void testQuery()
2309
2564
  q.addSeekKeyValue(_T("1"));
2310
2565
  q.addSeekKeyValue(_T("2"));
2311
2566
  q.addSeekKeyValue(_T("3"));
2312
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select id,name,fc in '1','2','3'")
2313
- , "queryString");
2314
-
2567
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) ==
2568
+ _T("select id,name,fc in '1','2','3'"),
2569
+ "queryString");
2570
+
2315
2571
  q.queryString(_T("IN '1','2','3'"));
2316
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in '1','2','3'")
2317
- , "queryString");
2318
-
2572
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in '1','2','3'"),
2573
+ "queryString");
2574
+
2319
2575
  q.queryString(_T("IN 1,2,3"));
2320
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in '1','2','3'")
2321
- , "queryString");
2322
-
2576
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in '1','2','3'"),
2577
+ "queryString");
2578
+
2323
2579
  q.queryString(_T(""));
2324
2580
  q.addSeekKeyValue(_T("1"));
2325
2581
  q.addSeekKeyValue(_T("2"));
2326
2582
  q.addSeekKeyValue(_T("3"));
2327
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in '1','2','3'")
2328
- , "queryString");
2329
-
2330
- //special field name
2583
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in '1','2','3'"),
2584
+ "queryString");
2585
+
2586
+ // special field name
2331
2587
  q.queryString(_T("select = 1"));
2332
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select = '1'")
2333
- , "queryString");
2334
-
2588
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select = '1'"),
2589
+ "queryString");
2590
+
2335
2591
  q.queryString(_T(""));
2336
2592
  q.addLogic(_T("select"), _T("="), _T("1"));
2337
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select = '1'")
2338
- , "queryString");
2339
-
2593
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("select = '1'"),
2594
+ "queryString");
2595
+
2340
2596
  q.queryString(_T("in <> 1"));
2341
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in <> '1'")
2342
- , "queryString");
2343
-
2597
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in <> '1'"),
2598
+ "queryString");
2599
+
2344
2600
  q.queryString(_T(""));
2345
2601
  q.addLogic(_T("in"), _T("<>"), _T("1"));
2346
- BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in <> '1'")
2347
- , "queryString");
2602
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("in <> '1'"),
2603
+ "queryString");
2604
+
2605
+ // test auto_escape
2606
+ q.queryString(_T("code = ab'c"), true);
2607
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'ab&'c'"),
2608
+ "queryString");
2609
+
2610
+ q.queryString(_T("code = ab&c"), true);
2611
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'ab&&c'"),
2612
+ "queryString");
2613
+
2614
+ q.queryString(_T("code = abc&"), true);
2615
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'abc&&'"),
2616
+ "queryString");
2617
+ q.queryString(_T("code = abc&&"), true);
2618
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'abc&&&&'"),
2619
+ "queryString");
2620
+
2621
+ q.queryString(_T("code = 'abc&'"), true);
2622
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'abc&&'"),
2623
+ "queryString");
2624
+ q.queryString(_T("code = 'abc&&'"), true);
2625
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'abc&&&&'"),
2626
+ "queryString");
2627
+
2628
+ q.queryString(_T("code = 'ab'c'"), true);
2629
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'ab&'c'"),
2630
+ "queryString");
2631
+
2632
+ q.queryString(_T("code = 'abc''"), true);
2633
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'abc&''"),
2634
+ "queryString");
2635
+
2636
+ q.queryString(_T("code = abc'"), true);
2637
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'abc&''"),
2638
+ "queryString");
2639
+
2640
+ // Invalid end no close '
2641
+ q.queryString(_T("code = 'abc"), true);
2642
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = 'abc'"),
2643
+ "queryString");
2644
+
2645
+ q.queryString(_T("code = &abc"), true);
2646
+ BOOST_CHECK_MESSAGE(_tstring(q.toString()) == _T("code = '&&abc'"),
2647
+ "queryString");
2348
2648
  }
2349
- // ------------------------------------------------------------------------
2350
- BOOST_AUTO_TEST_SUITE(btrv_nativ)
2351
2649
 
2352
- BOOST_FIXTURE_TEST_CASE(createNewDataBase, fixture)
2650
+ void teetNewDelete(database* db)
2651
+ {
2652
+ // printf("new delete start \n");
2653
+ for (int i = 0; i < 500; ++i)
2353
2654
  {
2354
- const _TCHAR* uri = makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME);
2355
- _tprintf(_T("URI = %s\n"), uri);
2356
- if (db()->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME)))
2357
- db()->drop();
2358
- testCreateNewDataBase(db());
2359
- }
2360
- BOOST_FIXTURE_TEST_CASE(clone, fixture) {testClone(db());}
2655
+ queryBase qb;
2656
+ qb.reset();
2361
2657
 
2362
- BOOST_FIXTURE_TEST_CASE(version, fixture) {testVersion(db());}
2658
+ query q;
2659
+ q.reset();
2363
2660
 
2364
- BOOST_FIXTURE_TEST_CASE(insert, fixture) {testInsert(db());}
2661
+ recordsetQuery rq;
2662
+ rq.reset();
2365
2663
 
2366
- BOOST_FIXTURE_TEST_CASE(find, fixture) {testFind(db());}
2664
+ groupQuery gq;
2665
+ gq.reset();
2367
2666
 
2368
- BOOST_FIXTURE_TEST_CASE(findNext, fixture)
2369
- {
2370
- testFindNext(db());
2371
- testFindIn(db());
2667
+ fieldNames f;
2668
+ f.addValue(_T("abc"));
2669
+
2670
+ activeTable atu(db, _T("user"));
2671
+ atu.index(0);
2672
+ activeTable atg(db, _T("groups"));
2673
+ atg.index(0);
2674
+ fieldNames fns;
2675
+ fns.keyField(_T("a"));
2676
+
2677
+ client::sum s(fns);
2678
+ s.reset();
2679
+
2680
+ client::count c(_T("a"));
2681
+ c.reset();
2682
+
2683
+ client::avg a(fns);
2684
+ a.reset();
2685
+ client::min mi(fns);
2686
+ mi.reset();
2687
+ client::max ma(fns);
2688
+ ma.reset();
2689
+
2690
+ recordset rs;
2691
+ rs.clear();
2692
+
2693
+ #ifndef BCB_64
2694
+ queryBase* nqb1 = new queryBase(); // bcb64 bad
2695
+ delete nqb1;
2696
+ #endif
2697
+ queryBase* nqb = queryBase::create(); // All OK
2698
+ nqb->release();
2699
+
2700
+ query* nqq = query::create(); // All OK
2701
+ nqq->release();
2702
+
2703
+ #ifndef BCB_64
2704
+ query* nqq1 = new query(); // bcb64 bad
2705
+ delete nqq1;
2706
+ #endif
2707
+ recordsetQuery* nrq = recordsetQuery::create(); // All OK
2708
+ nrq->release();
2709
+
2710
+ #ifndef BCB_64
2711
+ recordsetQuery* nrqq = new recordsetQuery(); // bcb64 bad
2712
+ delete nrqq;
2713
+
2714
+ groupQuery* ngq1 = new groupQuery(); // bcb64 bad
2715
+ delete ngq1;
2716
+ #endif
2717
+ groupQuery* ngq = groupQuery::create(); // All OK
2718
+ ngq->release();
2719
+
2720
+ fieldNames* nfn = fieldNames::create(); // All OK
2721
+ nfn->release();
2722
+
2723
+ #ifndef BCB_64
2724
+ fieldNames* nfn1 = new fieldNames(); // bcb64 bad
2725
+ delete nfn1;
2726
+ #endif
2727
+
2728
+ activeTable* at = new activeTable(db, _T("user")); // All OK
2729
+ activeTable* atg1 = new activeTable(db, _T("groups")); // All OK
2730
+ delete atg1;
2731
+ delete at;
2732
+
2733
+ #ifndef BCB_64
2734
+
2735
+ client::sum* ns1 = new sum(fns); // bcb64 bad
2736
+ delete ns1;
2737
+
2738
+ client::count* nc1 = new client::count(_T("a")); // bcb64 bad
2739
+ delete nc1;
2740
+
2741
+ client::avg* na1 = new client::avg(fns); // bcb64 bad
2742
+ delete na1;
2743
+
2744
+ client::min* nmin1 = new client::min(fns); // bcb64 bad
2745
+ delete nmin1;
2746
+
2747
+ client::max* nmax1 = new client::max(fns); // bcb64 bad
2748
+ delete nmax1;
2749
+
2750
+ #endif
2751
+
2752
+ client::sum* ns = sum::create(fns); // All OK
2753
+ ns->release();
2754
+
2755
+ client::count* nc = client::count::create(_T("a")); // All OK
2756
+ nc->release();
2757
+
2758
+ client::avg* na = client::avg::create(fns); // All OK
2759
+ na->release();
2760
+
2761
+ client::min* nmin = client::min::create(fns); // All OK
2762
+ nmin->release();
2763
+
2764
+ client::max* nmax = client::max::create(fns); // All OK
2765
+ nmax->release();
2766
+
2767
+ recordset* r = new recordset(); // All OK
2768
+
2769
+ recordset* rc(r->clone()); // All OK
2770
+ // delete rc; //All bad
2771
+ rc->release();
2772
+
2773
+ delete r; // All OK
2372
2774
  }
2373
2775
 
2374
- BOOST_FIXTURE_TEST_CASE(getPercentage, fixture) {testGetPercentage(db());}
2776
+ // activeTable releaseTable
2777
+ activeTable* at = new activeTable(db, _T("user"));
2778
+ at->releaseTable();
2779
+ BOOST_CHECK_MESSAGE(at->table() == NULL, " activeTable::releaseTable");
2780
+ delete at;
2781
+ }
2782
+
2783
+ void testJoin(database* db)
2784
+ {
2785
+
2786
+ #ifdef LINUX
2787
+ const char* fd_name = "名前";
2788
+ #else
2789
+ #ifdef _UNICODE
2790
+ const wchar_t fd_name[] = { L"名前" };
2791
+ #else
2792
+ char fd_name[30];
2793
+ WideCharToMultiByte(CP_UTF8, 0, L"名前", -1, fd_name, 30, NULL, NULL);
2794
+ #endif
2795
+ #endif
2796
+
2797
+ activeTable atu(db, _T("user"));
2798
+
2799
+ activeTable atg(db, _T("groups"));
2800
+
2801
+ activeTable ate(db, _T("extention"));
2802
+ recordset rs;
2803
+ query q;
2804
+
2805
+ atu.alias(fd_name, _T("name"));
2806
+ q.select(_T("id"), _T("name"), _T("group"))
2807
+ .where(_T("id"), _T("<="), 15000);
2808
+ atu.index(0).keyValue(1).read(rs, q);
2809
+ BOOST_CHECK_MESSAGE(rs.size() == 15000, " rs.size()== 15000");
2810
+
2811
+ // Join extention::comment
2812
+ q.reset();
2813
+ ate.index(0).join(
2814
+ rs, q.select(_T("comment")).optimize(queryBase::joinHasOneOrHasMany),
2815
+ _T("id"));
2816
+ BOOST_CHECK_MESSAGE(rs.size() == 15000, "join rs.size()== 15000");
2817
+
2818
+ // test reverse
2819
+
2820
+ row& last = rs.reverse().first();
2821
+ BOOST_CHECK_MESSAGE(last[_T("id")].i() == 15000, "last field id == 15000");
2822
+ BOOST_CHECK_MESSAGE(_tstring(last[_T("comment")].c_str()) ==
2823
+ _tstring(_T("15000 comment")),
2824
+ "last field comment");
2825
+
2826
+ // Join group::name
2827
+ q.reset();
2828
+ atg.alias(_T("name"), _T("group_name"));
2829
+ atg.index(0).join(rs, q.select(_T("group_name")), _T("group"));
2830
+ BOOST_CHECK_MESSAGE(rs.size() == 15000, "join2 rs.size()== 15000");
2831
+ row& first = rs.last();
2832
+
2833
+ BOOST_CHECK_MESSAGE(first[_T("id")].i() == 1, "first field id == 1");
2834
+ BOOST_CHECK_MESSAGE(_tstring(first[_T("comment")].c_str()) ==
2835
+ _tstring(_T("1 comment")),
2836
+ "first field comment");
2837
+
2838
+ BOOST_CHECK_MESSAGE(
2839
+ _tstring(first[_T("group_name")].c_str()) == _tstring(_T("1 group")),
2840
+ "first field group_name " << string(first[_T("group_name")].a_str()));
2841
+ BOOST_CHECK_MESSAGE(
2842
+ _tstring(first[_T("group_name")].c_str()) == _tstring(_T("1 group")),
2843
+ "first field group_name " << string(first[_T("group_name")].a_str()));
2844
+ // row_ptr row = rs[15000 - 9];
2845
+ row& rec = rs[15000 - 9];
2846
+ BOOST_CHECK_MESSAGE(
2847
+ _tstring(rec[_T("group_name")].c_str()) == _tstring(_T("4 group")),
2848
+ "group_name = 4 group " << string((rec)[_T("group_name")].a_str()));
2849
+
2850
+ // Test orderby
2851
+ rs.orderBy(_T("group_name"));
2852
+ // rec = rs[(size_t)0];
2853
+ BOOST_CHECK_MESSAGE(_tstring(rs[(size_t)0][_T("group_name")].c_str()) ==
2854
+ _tstring(_T("1 group")),
2855
+ "group_name = 1 group "
2856
+ << string(rs[(size_t)0][_T("group_name")].a_str()));
2857
+
2858
+ sortFields orderRv;
2859
+ orderRv.add(_T("group_name"), false);
2860
+ rs.orderBy(orderRv);
2861
+
2862
+ sortFields order;
2863
+ order.add(_T("group_name"), true);
2864
+ rs.orderBy(order);
2865
+ BOOST_CHECK_MESSAGE(_tstring(rs[(size_t)0][_T("group_name")].c_str()) ==
2866
+ _tstring(_T("1 group")),
2867
+ "group_name = 1 group "
2868
+ << string(rs[(size_t)0][_T("group_name")].a_str()));
2869
+
2870
+ // test union
2871
+ recordset rs2;
2872
+ atu.alias(fd_name, _T("name"));
2873
+
2874
+ q.reset().select(_T("id"), _T("name"), _T("group")).where(_T("id"),
2875
+ _T("<="), 16000);
2876
+ atu.index(0).keyValue(15001).read(rs2, q);
2877
+ ate.index(0).join(rs2, q.reset().select(_T("comment")).optimize(
2878
+ queryBase::joinHasOneOrHasMany),
2879
+ _T("id"));
2880
+
2881
+ atg.alias(_T("name"), _T("group_name"));
2882
+ atg.index(0).join(rs2, q.reset().select(_T("group_name")), _T("group"));
2883
+ BOOST_CHECK_MESSAGE(rs2.size() == 1000, "join2 rs2.size()== 1000");
2884
+
2885
+ rs += rs2;
2886
+ BOOST_CHECK_MESSAGE(rs.size() == 16000, "union rs.size()== 16000");
2887
+ // row = rs[15000];
2888
+ BOOST_CHECK_MESSAGE(rs[15000][_T("id")].i() == 15001, "id = 15001");
2889
+ // row = rs.last();
2890
+ BOOST_CHECK_MESSAGE(rs.last()[_T("id")].i() == 16000, "id = 16000");
2891
+
2892
+ // test group by
2893
+ groupQuery gq;
2894
+ gq.keyField(_T("group"), _T("id"));
2895
+
2896
+ client::count count1(_T("count"));
2897
+ gq.addFunction(&count1);
2898
+
2899
+ client::count count2(_T("gropu1_count"));
2900
+ count2.when(_T("group"), _T("="), 1);
2901
+
2902
+ gq.addFunction(&count2);
2903
+ rs.groupBy(gq);
2904
+ BOOST_CHECK_MESSAGE(rs.size() == 16000, "group by rs.size()== 16000");
2905
+ int v = rs[0][_T("gropu1_count")].i();
2906
+ BOOST_CHECK_MESSAGE(v == 1, "gropu1_count = " << v);
2907
+
2908
+ // clone
2909
+ recordset* rsv(rs.clone());
2910
+
2911
+ gq.reset();
2912
+ client::count count3(_T("count"));
2913
+ gq.addFunction(&count3).keyField(_T("group")); //.resultField(_T("count"));
2914
+ rs.groupBy(gq);
2915
+ BOOST_CHECK_MESSAGE(rs.size() == 5,
2916
+ "group by2 rs.size()==" << rsv->size());
2917
+
2918
+ // having
2919
+ recordsetQuery rq;
2920
+ rq.when(_T("gropu1_count"), _T("="), 1).or_(_T("gropu1_count"), _T("="), 2);
2921
+ rsv->matchBy(rq);
2922
+ BOOST_CHECK_MESSAGE(rsv->size() == 3200,
2923
+ "matchBy rsv.size() ==" << rsv->size());
2924
+ rsv->release();
2925
+ // top
2926
+ recordset rs3;
2927
+ rs.top(rs3, 10);
2928
+ BOOST_CHECK_MESSAGE(rs3.size() == 5, "top 10 rs3.size()== 5");
2929
+
2930
+ // query new / delete
2931
+ recordsetQuery* q1 = recordsetQuery::create();
2932
+ q1->when(_T("gropu1_count"), _T("="), 1)
2933
+ .or_(_T("gropu1_count"), _T("="), 2);
2934
+ q1->release();
2935
+
2936
+ query* q2 = query::create();
2937
+ q2->where(_T("gropu1_count"), _T("="), 1)
2938
+ .or_(_T("gropu1_count"), _T("="), 2);
2939
+ q2->release();
2940
+
2941
+ groupQuery* q3 = groupQuery::create();
2942
+ q3->keyField(_T("group"), _T("id"));
2943
+ q3->release();
2944
+ }
2945
+
2946
+ void testWirtableRecord(database* db)
2947
+ {
2948
+
2949
+ #ifdef LINUX
2950
+ const char* fd_name = "名前";
2951
+ #else
2952
+ #ifdef _UNICODE
2953
+ const wchar_t fd_name[] = { L"名前" };
2954
+ #else
2955
+ char fd_name[30];
2956
+ WideCharToMultiByte(CP_UTF8, 0, L"名前", -1, fd_name, 30, NULL, NULL);
2957
+ #endif
2958
+ #endif
2959
+
2960
+ activeTable atu(db, _T("user"));
2961
+
2962
+ writableRecord& rec = atu.index(0).getWritableRecord();
2963
+
2964
+ rec[_T("id")] = 120000;
2965
+ rec[fd_name] = _T("aiba");
2966
+ rec.save();
2967
+
2968
+ rec.clear();
2969
+ rec[_T("id")] = 120000;
2970
+ rec.read();
2971
+ BOOST_CHECK_MESSAGE(_tstring(rec[fd_name].c_str()) == _tstring(_T("aiba")),
2972
+ "rec 120000 name ");
2973
+
2974
+ rec.clear();
2975
+ rec[_T("id")] = 120001;
2976
+ bool r = rec.read();
2977
+ rec[fd_name] = _T("oono");
2978
+ if (!r)
2979
+ rec.insert();
2980
+ else
2981
+ rec.update();
2982
+
2983
+ rec.clear();
2984
+ rec[_T("id")] = 120001;
2985
+ rec.read();
2986
+
2987
+ BOOST_CHECK_MESSAGE(_tstring(rec[1].c_str()) == _tstring(_T("oono")),
2988
+ "rec 120001 name ");
2989
+ // update changed filed only
2990
+ rec.clear();
2991
+ rec[_T("id")] = 120001;
2992
+ rec[fd_name] = _T("matsumoto");
2993
+ rec.update();
2994
+
2995
+ rec.clear();
2996
+ rec[_T("id")] = 120001;
2997
+ rec.read();
2998
+ BOOST_CHECK_MESSAGE(_tstring(rec[fd_name].c_str()) ==
2999
+ _tstring(_T("matsumoto")),
3000
+ "rec 120001 update name ");
3001
+
3002
+ rec.del();
3003
+ rec[_T("id")] = 120000;
3004
+ rec.del();
3005
+
3006
+ rec.clear();
3007
+ rec[_T("id")] = 120001;
3008
+ bool ret = rec.read();
3009
+ BOOST_CHECK_MESSAGE(ret == false, "rec 120001 delete ");
3010
+
3011
+ rec.clear();
3012
+ rec[_T("id")] = 120000;
3013
+ ret = rec.read();
3014
+ BOOST_CHECK_MESSAGE(ret == false, "rec 120000 delete ");
3015
+ }
3016
+
3017
+ void testDbPool()
3018
+ {
3019
+ pooledDbManager poolMgr;
3020
+ pooledDbManager::setMaxConnections(4);
3021
+
3022
+ connectParams pm(PROTOCOL, HOSTNAME, _T("querytest"), DBNAME);
3023
+ poolMgr.use(&pm);
3024
+ poolMgr.use(&pm);
3025
+ poolMgr.use(&pm);
3026
+ poolMgr.unUse();
3027
+ poolMgr.reset(0);
3028
+ }
3029
+
3030
+ // ------------------------------------------------------------------------
3031
+ BOOST_AUTO_TEST_SUITE(btrv_nativ)
3032
+
3033
+ BOOST_FIXTURE_TEST_CASE(createNewDataBase, fixture)
3034
+ {
3035
+ const _TCHAR* uri = makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME);
3036
+ _tprintf(_T("URI = %s\n"), uri);
3037
+ if (db()->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME)))
3038
+ db()->drop();
3039
+ testCreateNewDataBase(db());
3040
+ }
3041
+ BOOST_FIXTURE_TEST_CASE(clone, fixture)
3042
+ {
3043
+ testClone(db());
3044
+ }
3045
+
3046
+ BOOST_FIXTURE_TEST_CASE(version, fixture)
3047
+ {
3048
+ testVersion(db());
3049
+ }
3050
+
3051
+ BOOST_FIXTURE_TEST_CASE(insert, fixture)
3052
+ {
3053
+ testInsert(db());
3054
+ }
3055
+
3056
+ BOOST_FIXTURE_TEST_CASE(find, fixture)
3057
+ {
3058
+ testFind(db());
3059
+ }
3060
+
3061
+ BOOST_FIXTURE_TEST_CASE(findNext, fixture)
3062
+ {
3063
+ testFindNext(db());
3064
+ testFindIn(db());
3065
+ }
3066
+
3067
+ BOOST_FIXTURE_TEST_CASE(getPercentage, fixture)
3068
+ {
3069
+ testGetPercentage(db());
3070
+ }
3071
+
3072
+ BOOST_FIXTURE_TEST_CASE(movePercentage, fixture)
3073
+ {
3074
+ testMovePercentage(db());
3075
+ }
2375
3076
 
2376
- BOOST_FIXTURE_TEST_CASE(movePercentage, fixture) {testMovePercentage(db());}
3077
+ BOOST_FIXTURE_TEST_CASE(getEqual, fixture)
3078
+ {
3079
+ testGetEqual(db());
3080
+ }
2377
3081
 
2378
- BOOST_FIXTURE_TEST_CASE(getEqual, fixture) {testGetEqual(db());}
3082
+ BOOST_FIXTURE_TEST_CASE(getNext, fixture)
3083
+ {
3084
+ testGetNext(db());
3085
+ }
2379
3086
 
2380
- BOOST_FIXTURE_TEST_CASE(getNext, fixture) {testGetNext(db());}
3087
+ BOOST_FIXTURE_TEST_CASE(getPrevious, fixture)
3088
+ {
3089
+ testGetPrevious(db());
3090
+ }
2381
3091
 
2382
- BOOST_FIXTURE_TEST_CASE(getPrevious, fixture) {testGetPrevious(db());}
3092
+ BOOST_FIXTURE_TEST_CASE(getGreater, fixture)
3093
+ {
3094
+ testGetGreater(db());
3095
+ }
2383
3096
 
2384
- BOOST_FIXTURE_TEST_CASE(getGreater, fixture) {testGetGreater(db());}
3097
+ BOOST_FIXTURE_TEST_CASE(getLessThan, fixture)
3098
+ {
3099
+ testGetLessThan(db());
3100
+ }
2385
3101
 
2386
- BOOST_FIXTURE_TEST_CASE(getLessThan, fixture) {testGetLessThan(db());}
3102
+ BOOST_FIXTURE_TEST_CASE(getFirst, fixture)
3103
+ {
3104
+ testGetFirst(db());
3105
+ }
2387
3106
 
2388
- BOOST_FIXTURE_TEST_CASE(getFirst, fixture) {testGetFirst(db());}
3107
+ BOOST_FIXTURE_TEST_CASE(getLast, fixture)
3108
+ {
3109
+ testGetLast(db());
3110
+ }
2389
3111
 
2390
- BOOST_FIXTURE_TEST_CASE(getLast, fixture) {testGetLast(db());}
3112
+ BOOST_FIXTURE_TEST_CASE(movePosition, fixture)
3113
+ {
3114
+ testMovePosition(db());
3115
+ }
2391
3116
 
2392
- BOOST_FIXTURE_TEST_CASE(movePosition, fixture) {testMovePosition(db());}
3117
+ BOOST_FIXTURE_TEST_CASE(update, fixture)
3118
+ {
3119
+ testUpdate(db());
3120
+ }
2393
3121
 
2394
- BOOST_FIXTURE_TEST_CASE(update, fixture) {testUpdate(db());}
3122
+ BOOST_FIXTURE_TEST_CASE(snapShot, fixture)
3123
+ {
3124
+ testSnapShot(db());
3125
+ }
2395
3126
 
2396
- BOOST_FIXTURE_TEST_CASE(snapShot, fixture) {testSnapShot(db());}
3127
+ BOOST_FIXTURE_TEST_CASE(conflict, fixture)
3128
+ {
3129
+ testConflict(db());
3130
+ }
2397
3131
 
2398
- BOOST_FIXTURE_TEST_CASE(conflict, fixture) {testConflict(db());}
3132
+ BOOST_FIXTURE_TEST_CASE(transactionLock, fixture)
3133
+ {
3134
+ testTransactionLock(db());
3135
+ }
2399
3136
 
2400
- BOOST_FIXTURE_TEST_CASE(transactionLock, fixture) {testTransactionLock(db());}
3137
+ BOOST_AUTO_TEST_CASE(Exclusive)
3138
+ {
3139
+ testExclusive();
3140
+ }
2401
3141
 
2402
- BOOST_FIXTURE_TEST_CASE(insert2, fixture) {testInsert2(db());}
3142
+ BOOST_FIXTURE_TEST_CASE(insert2, fixture)
3143
+ {
3144
+ testInsert2(db());
3145
+ }
2403
3146
 
2404
- BOOST_FIXTURE_TEST_CASE(delete_, fixture) {testDelete(db());}
3147
+ BOOST_FIXTURE_TEST_CASE(delete_, fixture)
3148
+ {
3149
+ testDelete(db());
3150
+ }
2405
3151
 
2406
- BOOST_FIXTURE_TEST_CASE(setOwner, fixture) {testSetOwner(db());}
3152
+ BOOST_FIXTURE_TEST_CASE(setOwner, fixture)
3153
+ {
3154
+ testSetOwner(db());
3155
+ }
2407
3156
 
2408
- BOOST_FIXTURE_TEST_CASE(dropIndex, fixture) {testDropIndex(db());}
3157
+ BOOST_FIXTURE_TEST_CASE(dropIndex, fixture)
3158
+ {
3159
+ testDropIndex(db());
3160
+ }
2409
3161
 
2410
- BOOST_FIXTURE_TEST_CASE(dropDatabase, fixture) {testDropDatabase(db());}
3162
+ BOOST_FIXTURE_TEST_CASE(dropDatabase, fixture)
3163
+ {
3164
+ testDropDatabase(db());
3165
+ }
2411
3166
 
2412
- BOOST_FIXTURE_TEST_CASE(connect, fixture) {testLogin(db());}
3167
+ BOOST_FIXTURE_TEST_CASE(connect, fixture)
3168
+ {
3169
+ testLogin(db());
3170
+ }
2413
3171
  BOOST_AUTO_TEST_SUITE_END()
2414
3172
 
2415
3173
  // ------------------------------------------------------------------------
@@ -2419,24 +3177,23 @@ BOOST_AUTO_TEST_SUITE_END()
2419
3177
  #include <bzs/env/mbcswchrLinux.h>
2420
3178
 
2421
3179
  BOOST_AUTO_TEST_SUITE(convert)
2422
- BOOST_AUTO_TEST_CASE(u8tombc)
2423
- {
2424
- char mbc[256];
2425
- char u8[256] = "123";
3180
+ BOOST_AUTO_TEST_CASE(u8tombc)
3181
+ {
3182
+ char mbc[256];
3183
+ char u8[256] = "123";
2426
3184
 
2427
- bzs::env::u8tombc(u8, -1, mbc, 256);
2428
- BOOST_CHECK_MESSAGE(!strcmp(mbc, u8), u8);
3185
+ bzs::env::u8tombc(u8, -1, mbc, 256);
3186
+ BOOST_CHECK_MESSAGE(!strcmp(mbc, u8), u8);
2429
3187
 
2430
- strcpy(u8, "漢字");
2431
- char mbcKanji[20] =
2432
- {0x8A, 0xBF, 0x8E, 0x9A, 0x00};
2433
- bzs::env::u8tombc(u8, -1, mbc, 256);
2434
- BOOST_CHECK_MESSAGE(!strcmp(mbc, mbcKanji), u8);
3188
+ strcpy(u8, "漢字");
3189
+ unsigned char mbcKanji[20] = { 0x8A, 0xBF, 0x8E, 0x9A, 0x00 };
3190
+ bzs::env::u8tombc(u8, -1, mbc, 256);
3191
+ BOOST_CHECK_MESSAGE(!strcmp(mbc, (const char*)mbcKanji), u8);
2435
3192
 
2436
- memset(u8, 0, 256);
2437
- bzs::env::mbctou8(mbc, -1, u8, 256);
2438
- BOOST_CHECK_MESSAGE(!strcmp(u8, "漢字"), "漢字2");
2439
- }
3193
+ memset(u8, 0, 256);
3194
+ bzs::env::mbctou8(mbc, -1, u8, 256);
3195
+ BOOST_CHECK_MESSAGE(!strcmp(u8, "漢字"), "漢字2");
3196
+ }
2440
3197
 
2441
3198
  BOOST_AUTO_TEST_SUITE_END()
2442
3199
  #endif
@@ -2445,17 +3202,35 @@ BOOST_AUTO_TEST_SUITE_END()
2445
3202
  // ------------------------------------------------------------------------
2446
3203
  BOOST_AUTO_TEST_SUITE(var_field)
2447
3204
 
2448
- BOOST_FIXTURE_TEST_CASE(createDataBaseVar, fixture) {testCreateDataBaseVar(db());}
3205
+ BOOST_FIXTURE_TEST_CASE(createDataBaseVar, fixture)
3206
+ {
3207
+ testCreateDataBaseVar(db());
3208
+ }
2449
3209
 
2450
- BOOST_FIXTURE_TEST_CASE(varField, fixture) {testVarField(db());}
3210
+ BOOST_FIXTURE_TEST_CASE(varField, fixture)
3211
+ {
3212
+ testVarField(db());
3213
+ }
2451
3214
 
2452
- BOOST_FIXTURE_TEST_CASE(varInsert, fixture) {testVarInsert(db());}
3215
+ BOOST_FIXTURE_TEST_CASE(varInsert, fixture)
3216
+ {
3217
+ testVarInsert(db());
3218
+ }
2453
3219
 
2454
- BOOST_FIXTURE_TEST_CASE(varRead, fixture) {testVarRead(db());}
3220
+ BOOST_FIXTURE_TEST_CASE(varRead, fixture)
3221
+ {
3222
+ testVarRead(db());
3223
+ }
2455
3224
 
2456
- BOOST_FIXTURE_TEST_CASE(filterVar, fixture) {testFilterVar(db());}
3225
+ BOOST_FIXTURE_TEST_CASE(filterVar, fixture)
3226
+ {
3227
+ testFilterVar(db());
3228
+ }
2457
3229
 
2458
- BOOST_FIXTURE_TEST_CASE(dropDataBaseVar, fixture) {testDropDataBaseVar(db());}
3230
+ BOOST_FIXTURE_TEST_CASE(dropDataBaseVar, fixture)
3231
+ {
3232
+ testDropDataBaseVar(db());
3233
+ }
2459
3234
 
2460
3235
  BOOST_AUTO_TEST_SUITE_END()
2461
3236
  // ------------------------------------------------------------------------
@@ -2463,9 +3238,15 @@ BOOST_AUTO_TEST_SUITE_END()
2463
3238
  // ------------------------------------------------------------------------
2464
3239
  BOOST_AUTO_TEST_SUITE(filter)
2465
3240
 
2466
- BOOST_FIXTURE_TEST_CASE(stringFileter, fixture) {testStringFileter(db());}
3241
+ BOOST_FIXTURE_TEST_CASE(stringFileter, fixture)
3242
+ {
3243
+ testStringFileter(db());
3244
+ }
2467
3245
 
2468
- BOOST_FIXTURE_TEST_CASE(dropDataBaseStr, fixture) {testDropDataBaseStr(db());}
3246
+ BOOST_FIXTURE_TEST_CASE(dropDataBaseStr, fixture)
3247
+ {
3248
+ testDropDataBaseStr(db());
3249
+ }
2469
3250
 
2470
3251
  BOOST_AUTO_TEST_SUITE_END()
2471
3252
  // ------------------------------------------------------------------------
@@ -2473,38 +3254,75 @@ BOOST_AUTO_TEST_SUITE_END()
2473
3254
  // ------------------------------------------------------------------------
2474
3255
  BOOST_AUTO_TEST_SUITE(kanjiSchema)
2475
3256
 
2476
- BOOST_FIXTURE_TEST_CASE(knajiCreateSchema, fixture) {testKnajiCreateSchema(db());}
3257
+ BOOST_FIXTURE_TEST_CASE(knajiCreateSchema, fixture)
3258
+ {
3259
+ testKnajiCreateSchema(db());
3260
+ }
2477
3261
 
2478
- BOOST_FIXTURE_TEST_CASE(insertKanji, fixture) {testInsertKanji(db());}
3262
+ BOOST_FIXTURE_TEST_CASE(insertKanji, fixture)
3263
+ {
3264
+ testInsertKanji(db());
3265
+ }
2479
3266
 
2480
- BOOST_FIXTURE_TEST_CASE(getEqualKanji, fixture) {testGetEqualKanji(db());}
3267
+ BOOST_FIXTURE_TEST_CASE(getEqualKanji, fixture)
3268
+ {
3269
+ testGetEqualKanji(db());
3270
+ }
2481
3271
 
2482
- BOOST_FIXTURE_TEST_CASE(dropDatabaseKanji, fixture) {testDropDatabaseKanji(db());}
3272
+ BOOST_FIXTURE_TEST_CASE(dropDatabaseKanji, fixture)
3273
+ {
3274
+ testDropDatabaseKanji(db());
3275
+ }
2483
3276
 
2484
3277
  BOOST_AUTO_TEST_SUITE_END()
2485
3278
 
2486
3279
  // ------------------------------------------------------------------------
2487
3280
  BOOST_AUTO_TEST_SUITE(filter)
2488
3281
 
2489
- BOOST_FIXTURE_TEST_CASE(resultField, fixture)
2490
- {
3282
+ BOOST_FIXTURE_TEST_CASE(resultField, fixture)
3283
+ {
2491
3284
 
2492
- if (db()->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME)))
2493
- db()->drop();
2494
- testCreateNewDataBase(db());
2495
- testResultField(db());
2496
- testResultDef();
2497
- testLogic(db());
2498
- testQuery();
2499
- }
2500
- BOOST_FIXTURE_TEST_CASE(drop, fixture)
2501
- {
2502
- testDropDatabase(db());
2503
- }
2504
- BOOST_FIXTURE_TEST_CASE(fuga, fixture) {BOOST_CHECK_EQUAL(2 * 3, 6);}
3285
+ if (db()->open(makeUri(PROTOCOL, HOSTNAME, DBNAME, BDFNAME)))
3286
+ db()->drop();
3287
+ testCreateNewDataBase(db());
3288
+ testResultField(db());
3289
+ testResultDef();
3290
+ testLogic(db());
3291
+ testQuery();
3292
+ }
3293
+ BOOST_FIXTURE_TEST_CASE(drop, fixture)
3294
+ {
3295
+ testDropDatabase(db());
3296
+ }
2505
3297
 
2506
3298
  BOOST_AUTO_TEST_SUITE_END()
2507
3299
 
2508
- // ------------------------------------------------------------------------
3300
+ BOOST_AUTO_TEST_SUITE(query)
3301
+
3302
+ BOOST_FIXTURE_TEST_CASE(new_delete, fixtureQuery)
3303
+ {
3304
+ teetNewDelete(db());
3305
+ }
2509
3306
 
3307
+ BOOST_FIXTURE_TEST_CASE(join, fixtureQuery)
3308
+ {
3309
+ testJoin(db());
3310
+ testWirtableRecord(db());
3311
+ }
2510
3312
 
3313
+ BOOST_AUTO_TEST_SUITE_END()
3314
+
3315
+ BOOST_AUTO_TEST_SUITE(dbPool)
3316
+
3317
+ BOOST_AUTO_TEST_CASE(pool)
3318
+ {
3319
+ testDbPool();
3320
+ }
3321
+ BOOST_AUTO_TEST_CASE(fuga)
3322
+ {
3323
+ BOOST_CHECK_EQUAL(2 * 3, 6);
3324
+ }
3325
+
3326
+ BOOST_AUTO_TEST_SUITE_END()
3327
+
3328
+ // ------------------------------------------------------------------------