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
@@ -20,17 +20,20 @@
20
20
  mb_internal_encoding('UTF-8');
21
21
 
22
22
  require_once("transactd.php");
23
+ use BizStation\Transactd as Bz;
23
24
 
24
25
  define("HOSTNAME", "localhost/");
25
26
  define("DBNAME", "test");
26
27
  define("DBNAME_VAR", "testvar");
27
28
  define("DBNAME_SF", "testString");
29
+ define("DBNAME_QT", "querytest");
28
30
  define("TABLENAME", "user");
29
31
  define("PROTOCOL", "tdap://");
30
32
  define("BDFNAME", "?dbfile=test.bdf");
31
33
  define("URL", PROTOCOL . HOSTNAME . DBNAME . BDFNAME);
32
34
  define("URL_VAR", PROTOCOL . HOSTNAME . DBNAME_VAR . BDFNAME);
33
35
  define("URL_SF", PROTOCOL . HOSTNAME . DBNAME_SF . BDFNAME);
36
+ define("URL_QT", PROTOCOL . HOSTNAME . DBNAME_QT . BDFNAME);
34
37
  define("FDI_ID", 0);
35
38
  define("FDI_NAME", 1);
36
39
  define("FDI_GROUP", 2);
@@ -39,23 +42,13 @@ define("FDI_NAMEW", 2);
39
42
  define("BULKBUFSIZE", 65535 - 1000);
40
43
  define("TEST_COUNT", 20000);
41
44
  define("FIVE_PERCENT_OF_TEST_COUNT", TEST_COUNT / 20);
42
-
43
- define("TYPE_SCHEMA_BDF", 0);
45
+ define("ALLOWABLE_ERROR_DISTANCE_IN_ESTIMATE_COUNT", TEST_COUNT / 4);
44
46
 
45
47
  define("ISOLATION_READ_COMMITTED", true);
46
48
  define("ISOLATION_REPEATABLE_READ", false);
47
49
 
48
50
  class transactdTest extends PHPUnit_Framework_TestCase
49
51
  {
50
- private function getDbObj()
51
- {
52
- return database::createObject();
53
- }
54
- private function deleteDbObj($db)
55
- {
56
- $db->close();
57
- $db = NULL;
58
- }
59
52
  private function dropDatabase($db)
60
53
  {
61
54
  $db->open(URL);
@@ -66,7 +59,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
66
59
  private function createDatabase($db)
67
60
  {
68
61
  $db->create(URL);
69
- if ($db->stat() == transactd::STATUS_TABLE_EXISTS_ERROR)
62
+ if ($db->stat() == Bz\transactd::STATUS_TABLE_EXISTS_ERROR)
70
63
  {
71
64
  $this->dropDatabase($db);
72
65
  $db->create(URL);
@@ -75,7 +68,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
75
68
  }
76
69
  private function openDatabase($db)
77
70
  {
78
- $db->open(URL, TYPE_SCHEMA_BDF, transactd::TD_OPEN_NORMAL);
71
+ $db->open(URL, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_NORMAL);
79
72
  $this->assertEquals($db->stat(), 0);
80
73
  }
81
74
  private function createTable($db)
@@ -83,15 +76,15 @@ class transactdTest extends PHPUnit_Framework_TestCase
83
76
  $this->openDatabase($db);
84
77
  $dbdef = $db->dbDef();
85
78
  $this->assertNotEquals($dbdef, NULL);
86
- $td = new tabledef();
79
+ $td = new Bz\tabledef();
87
80
  // Set table schema codepage to UTF-8
88
81
  // - codepage for field NAME and tableNAME
89
- $td->schemaCodePage = transactd::CP_UTF8;
82
+ $td->schemaCodePage = Bz\transactd::CP_UTF8;
90
83
  $td->setTableName(TABLENAME);
91
84
  $td->setFileName(TABLENAME . '.dat');
92
85
  // Set table default charaset index
93
86
  // - default charset for field VALUE
94
- $td->charsetIndex = transactd::charsetIndex(transactd::CP_UTF8);
87
+ $td->charsetIndex = Bz\transactd::charsetIndex(Bz\transactd::CP_UTF8);
95
88
  //
96
89
  $tableid = 1;
97
90
  $td->id = $tableid;
@@ -101,31 +94,31 @@ class transactdTest extends PHPUnit_Framework_TestCase
101
94
 
102
95
  $fd = $dbdef->insertField($tableid, 0);
103
96
  $fd->setName("id");
104
- $fd->type = transactd::ft_integer;
97
+ $fd->type = Bz\transactd::ft_integer;
105
98
  $fd->len = 4;
106
99
  $dbdef->updateTableDef($tableid);
107
100
  $this->assertEquals($dbdef->stat(), 0);
108
101
 
109
102
  $fd = $dbdef->insertField($tableid, 1);
110
103
  $fd->setName("name");
111
- $fd->type = transactd::ft_zstring;
104
+ $fd->type = Bz\transactd::ft_zstring;
112
105
  $fd->len = 33;
113
106
  $dbdef->updateTableDef($tableid);
114
107
  $this->assertEquals($dbdef->stat(), 0);
115
108
  // Set field charset index
116
109
  // - charset for each field VALUE
117
- // $fd->setCharsetIndex(transactd::charsetIndex(transactd::CP_UTF8))
110
+ // $fd->setCharsetIndex(Bz\transactd::charsetIndex(Bz\transactd::CP_UTF8))
118
111
 
119
112
  $fd = $dbdef->insertField($tableid, 2);
120
113
  $fd->setName("select");
121
- $fd->type = transactd::ft_integer;
114
+ $fd->type = Bz\transactd::ft_integer;
122
115
  $fd->len = 4;
123
116
  $dbdef->updateTableDef($tableid);
124
117
  $this->assertEquals($dbdef->stat(), 0);
125
118
 
126
119
  $fd = $dbdef->insertField($tableid, 3);
127
120
  $fd->setName("in");
128
- $fd->type = transactd::ft_integer;
121
+ $fd->type = Bz\transactd::ft_integer;
129
122
  $fd->len = 4;
130
123
  $dbdef->updateTableDef($tableid);
131
124
  $this->assertEquals($dbdef->stat(), 0);
@@ -148,47 +141,108 @@ class transactdTest extends PHPUnit_Framework_TestCase
148
141
 
149
142
  public function testCreateDatabase()
150
143
  {
151
- $db = $this->getDbObj();
144
+ $db = new Bz\database();
152
145
  $this->createDatabase($db);
153
- $this->deleteDbObj($db);
154
146
  }
155
147
  public function testCreateTable()
156
148
  {
157
- $db = $this->getDbObj();
149
+ $db = new Bz\database();
158
150
  $this->createTable($db);
159
- $this->deleteDbObj($db);
160
151
  }
161
- public function testOpenTable()
152
+ // open database, not call close explicitly
153
+ public function testOpenDatabase()
162
154
  {
163
- $db = $this->getDbObj();
155
+ $db = new Bz\database();
156
+ $db->open(URL);
157
+ }
158
+ // open database, call close explicitly
159
+ public function testCloseDatabase()
160
+ {
161
+ $db = new Bz\database();
162
+ $db->open(URL);
163
+ $db->close();
164
+ }
165
+ // open database, open table, not call close explicitly
166
+ public function testOpenA()
167
+ {
168
+ $db = new Bz\database();
169
+ $db->open(URL);
170
+ $tb = $this->openTable($db);
171
+ }
172
+ // open database, open table, call close explicitly
173
+ public function testOpenB()
174
+ {
175
+ $db = new Bz\database();
176
+ $db->open(URL);
164
177
  $tb = $this->openTable($db);
165
178
  $tb->close();
166
- $this->deleteDbObj($db);
179
+ $db->close();
180
+ }
181
+ // open database, open table, call database::close explicitly
182
+ public function testOpenC()
183
+ {
184
+ $db = new Bz\database();
185
+ $db->open(URL);
186
+ $tb = $this->openTable($db);
187
+ $db->close();
188
+ }
189
+ // open database, open table, call table::close explicitly
190
+ public function testOpenD()
191
+ {
192
+ $db = new Bz\database();
193
+ $db->open(URL);
194
+ $tb = $this->openTable($db);
195
+ $tb->close();
196
+ }
197
+ // open database, open table, call table::release explicitly
198
+ public function testOpenE()
199
+ {
200
+ $db = new Bz\database();
201
+ $db->open(URL);
202
+ $tb = $this->openTable($db);
203
+ $tb->release();
204
+ }
205
+ public function testClone()
206
+ {
207
+ $db = new Bz\database();
208
+ $db->open(URL);
209
+ $this->assertEquals($db->stat(), 0);
210
+ $this->assertEquals($db->isOpened(), true);
211
+ $db2 = clone $db;
212
+ $this->assertEquals($db2->stat(), 0);
213
+ $this->assertEquals($db2->isOpened(), true);
214
+ //echo("\ndb->_cPtr " . $db->_cPtr . "\ndb2->_cPtr " . $db2->_cPtr . "\n");
215
+ $db2->close();
216
+ $this->assertEquals($db2->stat(), 0);
217
+ $this->assertEquals($db2->isOpened(), false);
218
+ unset($db2);
219
+ $this->assertEquals($db->stat(), 0);
220
+ $this->assertEquals($db->isOpened(), true);
167
221
  }
168
222
  public function testVersion()
169
223
  {
170
- $db = $this->getDbObj();
224
+ $db = new Bz\database();
171
225
  $db->connect(PROTOCOL . HOSTNAME);
172
226
  $this->assertEquals($db->stat(), 0);
173
- $vv = new btrVersions();
227
+ $vv = new Bz\btrVersions();
174
228
  $db->getBtrVersion($vv);
175
229
  $this->assertEquals($db->stat(), 0);
176
230
  $client_ver = $vv->version(0);
177
231
  $server_ver = $vv->version(1);
178
232
  $engine_ver = $vv->version(2);
179
- $this->assertEquals($client_ver->majorVersion, transactd::CPP_INTERFACE_VER_MAJOR);
180
- $this->assertEquals($client_ver->minorVersion, transactd::CPP_INTERFACE_VER_MINOR);
233
+ $this->assertEquals($client_ver->majorVersion, Bz\transactd::CPP_INTERFACE_VER_MAJOR);
234
+ $this->assertEquals($client_ver->minorVersion, Bz\transactd::CPP_INTERFACE_VER_MINOR);
181
235
  $this->assertEquals(chr($client_ver->type), 'N');
182
236
  $this->assertTrue($server_ver->majorVersion >= 5);
183
237
  $this->assertTrue($server_ver->majorVersion != 5 || $server_ver->minorVersion >= 5);
184
238
  $this->assertEquals(chr($server_ver->type), 'M');
185
- $this->assertEquals($engine_ver->majorVersion, transactd::TRANSACTD_VER_MAJOR);
186
- $this->assertEquals($engine_ver->minorVersion, transactd::TRANSACTD_VER_MINOR);
239
+ $this->assertEquals($engine_ver->majorVersion, Bz\transactd::TRANSACTD_VER_MAJOR);
240
+ $this->assertEquals($engine_ver->minorVersion, Bz\transactd::TRANSACTD_VER_MINOR);
187
241
  $this->assertEquals(chr($engine_ver->type), 'T');
188
242
  }
189
243
  public function testInsert()
190
244
  {
191
- $db = $this->getDbObj();
245
+ $db = new Bz\database();
192
246
  $tb = $this->openTable($db);
193
247
  $this->assertNotEquals($tb, NULL);
194
248
  $this->assertEquals($tb->recordCount(), 0);
@@ -215,12 +269,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
215
269
  $tb->commitBulkInsert();
216
270
  $this->assertEquals($tb->stat(), 0);
217
271
  $db->endTrn();
218
- $tb->close();
219
- $this->deleteDbObj($db);
220
272
  }
221
273
  public function testFind()
222
274
  {
223
- $db = $this->getDbObj();
275
+ $db = new Bz\database();
224
276
  $tb = $this->openTable($db);
225
277
  $this->assertNotEquals($tb, NULL);
226
278
  $tb->setKeyNum(0);
@@ -228,7 +280,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
228
280
  $tb->setFilter('id >= 10 and id < ' . TEST_COUNT, 1, 0);
229
281
  $v = 10;
230
282
  $tb->setFV(FDI_ID, $v);
231
- $tb->find(table::findForword);
283
+ $tb->find(Bz\table::findForword);
232
284
  $i = $v;
233
285
  while ($i < TEST_COUNT)
234
286
  {
@@ -241,7 +293,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
241
293
  $tb->clearBuffer();
242
294
  $v = TEST_COUNT - 1;
243
295
  $tb->setFV(FDI_ID, $v);
244
- $tb->find(table::findBackForword);
296
+ $tb->find(Bz\table::findBackForword);
245
297
  $i = $v;
246
298
  while ($i >= 10)
247
299
  {
@@ -254,14 +306,12 @@ class transactdTest extends PHPUnit_Framework_TestCase
254
306
  $tb->clearBuffer();
255
307
  $v = TEST_COUNT;
256
308
  $tb->setFV(FDI_ID, $v);
257
- $tb->find(table::findForword);
258
- $this->assertEquals($tb->stat(), transactd::STATUS_EOF);
259
- $tb->close();
260
- $this->deleteDbObj($db);
309
+ $tb->find(Bz\table::findForword);
310
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_EOF);
261
311
  }
262
312
  public function testFindNext()
263
313
  {
264
- $db = $this->getDbObj();
314
+ $db = new Bz\database();
265
315
  $tb = $this->openTable($db);
266
316
  $this->assertNotEquals($tb, NULL);
267
317
  $tb->setKeyNum(0);
@@ -277,23 +327,21 @@ class transactdTest extends PHPUnit_Framework_TestCase
277
327
  $this->assertEquals($tb->stat(), 0);
278
328
  $this->assertEquals($tb->getFVint(FDI_ID), $i);
279
329
  }
280
- $tb->close();
281
- $this->deleteDbObj($db);
282
330
  }
283
331
  public function testFindIn()
284
332
  {
285
- $db = $this->getDbObj();
333
+ $db = new Bz\database();
286
334
  $tb = $this->openTable($db);
287
335
  $this->assertNotEquals($tb, NULL);
288
336
  $tb->setKeyNum(0);
289
337
  $tb->clearBuffer();
290
- $q = new queryBase();
291
- $q->addInValue('10', true);
292
- $q->addInValue('300000');
293
- $q->addInValue('50');
294
- $q->addInValue('-1');
295
- $q->addInValue('80');
296
- $q->addInValue('5000');
338
+ $q = new Bz\query();
339
+ $q->addSeekKeyValue('10', true);
340
+ $q->addSeekKeyValue('300000');
341
+ $q->addSeekKeyValue('50');
342
+ $q->addSeekKeyValue('-1');
343
+ $q->addSeekKeyValue('80');
344
+ $q->addSeekKeyValue('5000');
297
345
 
298
346
  $tb->setQuery($q);
299
347
  $this->assertEquals($tb->stat(), 0);
@@ -301,7 +349,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
301
349
  $this->assertEquals($tb->stat(), 0);
302
350
  $this->assertEquals($tb->getFVint(FDI_ID), 10);
303
351
  $tb->findNext();
304
- $this->assertEquals($tb->stat(), transactd::STATUS_NOT_FOUND_TI);
352
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_NOT_FOUND_TI);
305
353
 
306
354
  $msg = $tb->keyValueDescription();
307
355
  $this->assertEquals($msg, "table:user\nstat:4\nid = 300000\n");
@@ -309,7 +357,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
309
357
  $tb->findNext();
310
358
  $this->assertEquals($tb->getFVint(FDI_ID), 50);
311
359
  $tb->findNext();
312
- $this->assertEquals($tb->stat(), transactd::STATUS_NOT_FOUND_TI);
360
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_NOT_FOUND_TI);
313
361
 
314
362
  $msg = $tb->keyValueDescription();
315
363
  $this->assertEquals($msg, "table:user\nstat:4\nid = -1\n");
@@ -319,13 +367,13 @@ class transactdTest extends PHPUnit_Framework_TestCase
319
367
  $tb->findNext();
320
368
  $this->assertEquals($tb->getFVint(FDI_ID), 5000);
321
369
  $tb->findNext();
322
- $this->assertEquals($tb->stat(), transactd::STATUS_EOF);
370
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_EOF);
323
371
 
324
372
  // Many params
325
- $q->addInValue('1', true);
373
+ $q->addSeekKeyValue('1', true);
326
374
  for($i = 2; $i <= 10000; $i++)
327
375
  {
328
- $q->addInValue(strval($i));
376
+ $q->addSeekKeyValue(strval($i));
329
377
  }
330
378
  $tb->setQuery($q);
331
379
  $this->assertEquals($tb->stat(), 0);
@@ -338,7 +386,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
338
386
  $this->assertEquals($tb->getFVint(FDI_ID), $i);
339
387
  $tb->findNext(true);
340
388
  }
341
- $this->assertEquals($tb->stat(), transactd::STATUS_EOF);
389
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_EOF);
342
390
  $this->assertEquals($i, 10000);
343
391
 
344
392
  //LogicalCountLimit
@@ -353,15 +401,12 @@ class transactdTest extends PHPUnit_Framework_TestCase
353
401
  $this->assertEquals($tb->getFVint(FDI_ID), $i);
354
402
  $tb->findNext(true);
355
403
  }
356
- $this->assertEquals($tb->stat(), transactd::STATUS_EOF);
404
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_EOF);
357
405
  $this->assertEquals($i, 10000);
358
-
359
- $tb->close();
360
- $this->deleteDbObj($db);
361
406
  }
362
407
  public function testGetPercentage()
363
408
  {
364
- $db = $this->getDbObj();
409
+ $db = new Bz\database();
365
410
  $tb = $this->openTable($db);
366
411
  $this->assertNotEquals($tb, NULL);
367
412
  $tb->clearBuffer();
@@ -371,12 +416,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
371
416
  $this->assertEquals($tb->stat(), 0);
372
417
  $per = $tb->getPercentage();
373
418
  $this->assertTrue(abs(5000 - $per) < 500); // 500 = 5%
374
- $tb->close();
375
- $this->deleteDbObj($db);
376
419
  }
377
420
  public function testMovePercentage()
378
421
  {
379
- $db = $this->getDbObj();
422
+ $db = new Bz\database();
380
423
  $tb = $this->openTable($db);
381
424
  $this->assertNotEquals($tb, NULL);
382
425
  $tb->clearBuffer();
@@ -385,12 +428,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
385
428
  $v = $tb->getFVint(FDI_ID);
386
429
  $this->assertEquals($tb->stat(), 0);
387
430
  $this->assertTrue(abs(TEST_COUNT / 2 + 1 - $v) < FIVE_PERCENT_OF_TEST_COUNT);
388
- $tb->close();
389
- $this->deleteDbObj($db);
390
431
  }
391
432
  public function testGetEqual()
392
433
  {
393
- $db = $this->getDbObj();
434
+ $db = new Bz\database();
394
435
  $tb = $this->openTable($db);
395
436
  $this->assertNotEquals($tb, NULL);
396
437
  $db->beginSnapshot();
@@ -402,12 +443,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
402
443
  $this->assertEquals($tb->getFVint(FDI_ID), $i);
403
444
  }
404
445
  $db->endSnapshot();
405
- $tb->close();
406
- $this->deleteDbObj($db);
407
446
  }
408
447
  public function testGetNext()
409
448
  {
410
- $db = $this->getDbObj();
449
+ $db = new Bz\database();
411
450
  $tb = $this->openTable($db);
412
451
  $this->assertNotEquals($tb, NULL);
413
452
  $db->beginSnapshot();
@@ -422,12 +461,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
422
461
  $this->assertEquals($tb->getFVint(FDI_ID), $i);
423
462
  }
424
463
  $db->endSnapshot();
425
- $tb->close();
426
- $this->deleteDbObj($db);
427
464
  }
428
465
  public function testGetPrevious()
429
466
  {
430
- $db = $this->getDbObj();
467
+ $db = new Bz\database();
431
468
  $tb = $this->openTable($db);
432
469
  $this->assertNotEquals($tb, NULL);
433
470
  $db->beginSnapshot();
@@ -444,12 +481,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
444
481
  $tb->seekPrev();
445
482
  $this->assertEquals($tb->getFVstr(FDI_NAME), 'kosaka');
446
483
  $db->endSnapshot();
447
- $tb->close();
448
- $this->deleteDbObj($db);
449
484
  }
450
485
  public function testGetGreater()
451
486
  {
452
- $db = $this->getDbObj();
487
+ $db = new Bz\database();
453
488
  $tb = $this->openTable($db);
454
489
  $this->assertNotEquals($tb, NULL);
455
490
  $vv = TEST_COUNT * 3 / 4;
@@ -466,12 +501,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
466
501
  $this->assertEquals($tb->getFVint(FDI_ID), $vv + 1);
467
502
  $tb->seekPrev();
468
503
  $this->assertEquals($tb->getFVint(FDI_ID), $vv);
469
- $tb->close();
470
- $this->deleteDbObj($db);
471
504
  }
472
505
  public function testGetLessThan()
473
506
  {
474
- $db = $this->getDbObj();
507
+ $db = new Bz\database();
475
508
  $tb = $this->openTable($db);
476
509
  $this->assertNotEquals($tb, NULL);
477
510
  $vv = TEST_COUNT * 3 / 4;
@@ -488,34 +521,28 @@ class transactdTest extends PHPUnit_Framework_TestCase
488
521
  $this->assertEquals($tb->getFVint(FDI_ID), $vv - 1);
489
522
  $tb->seekPrev();
490
523
  $this->assertEquals($tb->getFVint(FDI_ID), $vv - 2);
491
- $tb->close();
492
- $this->deleteDbObj($db);
493
524
  }
494
525
  public function testGetFirst()
495
526
  {
496
- $db = $this->getDbObj();
527
+ $db = new Bz\database();
497
528
  $tb = $this->openTable($db);
498
529
  $this->assertNotEquals($tb, NULL);
499
530
  $tb->clearBuffer();
500
531
  $tb->seekFirst();
501
532
  $this->assertEquals($tb->getFVstr(FDI_NAME), 'kosaka');
502
- $tb->close();
503
- $this->deleteDbObj($db);
504
533
  }
505
534
  public function testGetLast()
506
535
  {
507
- $db = $this->getDbObj();
536
+ $db = new Bz\database();
508
537
  $tb = $this->openTable($db);
509
538
  $this->assertNotEquals($tb, NULL);
510
539
  $tb->clearBuffer();
511
540
  $tb->seekLast();
512
541
  $this->assertEquals($tb->getFVstr(FDI_NAME), '' . (TEST_COUNT + 2));
513
- $tb->close();
514
- $this->deleteDbObj($db);
515
542
  }
516
543
  public function testMovePosition()
517
544
  {
518
- $db = $this->getDbObj();
545
+ $db = new Bz\database();
519
546
  $tb = $this->openTable($db);
520
547
  $this->assertNotEquals($tb, NULL);
521
548
  $vv = TEST_COUNT * 3 / 4;
@@ -535,12 +562,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
535
562
  $this->assertEquals($tb->getFVint(FDI_ID), $vv - 2);
536
563
  $tb->seekByBookmark($ps);
537
564
  $this->assertEquals($tb->getFVint(FDI_ID), $ps_vv);
538
- $tb->close();
539
- $this->deleteDbObj($db);
540
565
  }
541
566
  public function testUpdate()
542
567
  {
543
- $db = $this->getDbObj();
568
+ $db = new Bz\database();
544
569
  $tb = $this->openTable($db);
545
570
  $this->assertNotEquals($tb, NULL);
546
571
  $db->beginTrn();
@@ -552,7 +577,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
552
577
  $this->assertEquals($tb->stat(), 0);
553
578
  $v = TEST_COUNT + TEST_COUNT / 2;
554
579
  $tb->setFV(FDI_ID, $v);
555
- $tb->update(table::changeCurrentNcc); // 5 . 30000 cur 5
580
+ $tb->update(Bz\table::changeCurrentNcc); // 5 . 30000 cur 5
556
581
  $this->assertEquals($tb->stat(), 0);
557
582
  $tb->seekNext(); // next 5
558
583
  $this->assertEquals($tb->getFVint(FDI_ID), 6);
@@ -562,14 +587,14 @@ class transactdTest extends PHPUnit_Framework_TestCase
562
587
  $this->assertEquals($tb->getFVint(FDI_ID), $v);
563
588
  $v = 5;
564
589
  $tb->setFV(FDI_ID, $v);
565
- $tb->update(table::changeCurrentCc); // 19999 . 5 cur 5
590
+ $tb->update(Bz\table::changeCurrentCc); // 19999 . 5 cur 5
566
591
  $this->assertEquals($tb->stat(), 0);
567
592
  $tb->seekNext();
568
593
  $this->assertEquals($tb->stat(), 0);
569
594
  $this->assertEquals($tb->getFVint(FDI_ID), 6);
570
595
  $v = TEST_COUNT - 1;
571
596
  $tb->setFV(FDI_ID, $v);
572
- $tb->update(table::changeCurrentCc); // 6 . 19999 cur 19999
597
+ $tb->update(Bz\table::changeCurrentCc); // 6 . 19999 cur 19999
573
598
  $tb->seekPrev(); // prev 19999
574
599
  $this->assertEquals($tb->getFVint(FDI_ID), $v -1);
575
600
  $v = 10;
@@ -595,19 +620,17 @@ class transactdTest extends PHPUnit_Framework_TestCase
595
620
  $v = 8;
596
621
  $tb->setFV(FDI_ID, $v);
597
622
  $tb->setFV(FDI_NAME, 'ABC');
598
- $tb->update(table::changeInKey);
623
+ $tb->update(Bz\table::changeInKey);
599
624
  $this->assertEquals($tb->stat(), 0);
600
625
  $tb->clearBuffer();
601
626
  $tb->setFV(FDI_ID, $v);
602
627
  $tb->seek();
603
628
  $this->assertEquals($tb->getFVstr(FDI_NAME), 'ABC');
604
- $tb->close();
605
- $this->deleteDbObj($db);
606
629
  }
607
630
  public function testSnapShot()
608
631
  {
609
- $db = $this->getDbObj();
610
- $db2 = $this->getDbObj();
632
+ $db = new Bz\database();
633
+ $db2 = new Bz\database();
611
634
  $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
612
635
  $this->assertEquals($db2->stat(), 0);
613
636
  $tb = $this->openTable($db);
@@ -631,7 +654,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
631
654
  if (ISOLATION_READ_COMMITTED)
632
655
  $this->assertEquals($tb2->stat(), 0);
633
656
  elseif (ISOLATION_REPEATABLE_READ)
634
- $this->assertEquals($tb2->stat(), transactd::STATUS_LOCK_ERROR);
657
+ $this->assertEquals($tb2->stat(), Bz\transactd::STATUS_LOCK_ERROR);
635
658
  // ----------------------------------------------------
636
659
  $tb->seekFirst();
637
660
  $secondValue = $tb->getFVstr(FDI_NAME);
@@ -643,15 +666,61 @@ class transactdTest extends PHPUnit_Framework_TestCase
643
666
  else
644
667
  $this->assertEquals($secondValue, $firstValue);
645
668
  // ----------------------------------------------------
646
- $tb->close();
647
- $tb2->close();
648
- $this->deleteDbObj($db);
649
- $this->deleteDbObj($db2);
669
+ }
670
+ public function testConflict()
671
+ {
672
+ $db = new Bz\database();
673
+ $db2 = new Bz\database();
674
+ $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
675
+ $this->assertEquals($db2->stat(), 0);
676
+ $tb = $this->openTable($db);
677
+ $this->assertNotEquals($tb, NULL);
678
+ $tb2 = $this->openTable($db2);
679
+ $this->assertNotEquals($tb2, NULL);
680
+ $tb->setKeyNum(0);
681
+ $tb->seekFirst();
682
+ $this->assertEquals($tb->stat(), 0);
683
+ // ----------------------------------------------------
684
+ // Change Index field
685
+ // ----------------------------------------------------
686
+ // Change data by another connection
687
+ $tb2->setKeyNum(0);
688
+ $tb2->seekFirst();
689
+ $this->assertEquals($tb2->stat(), 0);
690
+ $tb2->setFV(FDI_ID, $tb2->getFVint(FDI_ID) - 10);
691
+ $tb2->update();
692
+ $this->assertEquals($tb2->stat(), 0);
693
+ // ----------------------------------------------------
694
+ // Change same record data by original connection
695
+ $tb->setFV(FDI_ID, $tb->getFVint(FDI_ID) - 8);
696
+ $tb->update();
697
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_CHANGE_CONFLICT);
698
+ // ----------------------------------------------------
699
+ // Change Non index field
700
+ // ----------------------------------------------------
701
+ // Change data by another connection
702
+ $tb->seekFirst();
703
+ $this->assertEquals($tb->stat(), 0);
704
+ $tb2->seekFirst();
705
+ $this->assertEquals($tb2->stat(), 0);
706
+ $tb2->setFV(FDI_NAME, $tb2->getFVint(FDI_ID) - 10);
707
+ $tb2->update();
708
+ $this->assertEquals($tb2->stat(), 0);
709
+ // ----------------------------------------------------
710
+ // Change same record data by original connection
711
+ $tb->setFV(FDI_NAME, $tb->getFVint(FDI_NAME) - 8);
712
+ $tb->update();
713
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_CHANGE_CONFLICT);
714
+ // ----------------------------------------------------
715
+ $tb2->release();
716
+ $tb->release();
717
+ unset($db2);
718
+ unset($db);
650
719
  }
651
720
  public function testTransactionLock()
652
721
  {
653
- $db = $this->getDbObj();
654
- $db2 = $this->getDbObj();
722
+ $db = new Bz\database();
723
+ $db2 = new Bz\database();
655
724
  $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
656
725
  $this->assertEquals($db2->stat(), 0);
657
726
  $tb = $this->openTable($db);
@@ -661,7 +730,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
661
730
  // ----------------------------------------------------
662
731
  // Read test that single record lock with read
663
732
  // ----------------------------------------------------
664
- $db->beginTrn(transactd::LOCK_SINGLE_NOWAIT);
733
+ $db->beginTrn(Bz\transactd::LOCK_SINGLE_NOWAIT);
665
734
  $tb->setKeyNum(0);
666
735
  $tb->seekFirst();
667
736
  $this->assertEquals($tb->stat(), 0);
@@ -678,7 +747,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
678
747
  // ----------------------------------------------------
679
748
  // Can't read test that multi record lock with read
680
749
  // ----------------------------------------------------
681
- $db->beginTrn(transactd::LOCK_MULTI_NOWAIT);
750
+ $db->beginTrn(Bz\transactd::LOCK_MULTI_NOWAIT);
682
751
  $tb->setKeyNum(0);
683
752
  $tb->seekFirst();
684
753
  $this->assertEquals($tb->stat(), 0);
@@ -686,18 +755,18 @@ class transactdTest extends PHPUnit_Framework_TestCase
686
755
  $tb->seekNext();
687
756
  // not transactional user can not read
688
757
  $tb2->seekFirst();
689
- $this->assertEquals($tb2->stat(), transactd::STATUS_LOCK_ERROR);
758
+ $this->assertEquals($tb2->stat(), Bz\transactd::STATUS_LOCK_ERROR);
690
759
  // The second transactional user can not lock same record
691
760
  $db2->beginTrn();
692
761
  $tb2->setKeyNum(0);
693
762
  $tb2->seekFirst();
694
- $this->assertEquals($tb2->stat(), transactd::STATUS_LOCK_ERROR);
763
+ $this->assertEquals($tb2->stat(), Bz\transactd::STATUS_LOCK_ERROR);
695
764
  $db2->endTrn();
696
765
  $db->endTrn();
697
766
  // ----------------------------------------------------
698
767
  // Can't read test that single record lock with change
699
768
  // ----------------------------------------------------
700
- $db->beginTrn(transactd::LOCK_SINGLE_NOWAIT);
769
+ $db->beginTrn(Bz\transactd::LOCK_SINGLE_NOWAIT);
701
770
  $tb->setKeyNum(0);
702
771
  $tb->seekFirst();
703
772
  $this->assertEquals($tb->stat(), 0);
@@ -707,17 +776,17 @@ class transactdTest extends PHPUnit_Framework_TestCase
707
776
  // move from first record.
708
777
  $tb->seekNext();
709
778
  $tb2->seekFirst();
710
- $this->assertEquals($tb2->stat(), transactd::STATUS_LOCK_ERROR);
779
+ $this->assertEquals($tb2->stat(), Bz\transactd::STATUS_LOCK_ERROR);
711
780
  $db2->beginTrn();
712
781
  $tb2->setKeyNum(0);
713
782
  $tb2->seekFirst();
714
- $this->assertEquals($tb2->stat(), transactd::STATUS_LOCK_ERROR);
783
+ $this->assertEquals($tb2->stat(), Bz\transactd::STATUS_LOCK_ERROR);
715
784
  $db2->endTrn();
716
785
  $db->endTrn();
717
786
  // ----------------------------------------------------
718
787
  // Abort test that Single record lock transaction
719
788
  // ----------------------------------------------------
720
- $db->beginTrn(transactd::LOCK_SINGLE_NOWAIT);
789
+ $db->beginTrn(Bz\transactd::LOCK_SINGLE_NOWAIT);
721
790
  $tb->setKeyNum(0);
722
791
  $tb->seekFirst();
723
792
  $this->assertEquals($tb->stat(), 0);
@@ -730,64 +799,91 @@ class transactdTest extends PHPUnit_Framework_TestCase
730
799
  $tb2->setKeyNum(0);
731
800
  $tb2->seekFirst();
732
801
  $this->assertEquals($tb2->getFVstr(FDI_NAME), 'ABC');
733
- $tb->close();
734
- $tb2->close();
735
- $this->deleteDbObj($db);
736
- $this->deleteDbObj($db2);
737
802
  }
738
- public function testConflict()
803
+ public function testExclusive()
739
804
  {
740
- $db = $this->getDbObj();
741
- $db2 = $this->getDbObj();
805
+ // db mode exclusive
806
+ $db = new Bz\database();
807
+ $db->open(URL, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_EXCLUSIVE);
808
+ $this->assertEquals($db->stat(), 0);
809
+ $tb = $db->openTable(TABLENAME);
810
+ $this->assertEquals($db->stat(), 0);
811
+
812
+ // Can not open database from other connections.
813
+ $db2 = new Bz\database();
742
814
  $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
743
815
  $this->assertEquals($db2->stat(), 0);
744
- $tb = $this->openTable($db);
745
- $this->assertNotEquals($tb, NULL);
746
- $tb2 = $this->openTable($db2);
747
- $this->assertNotEquals($tb2, NULL);
816
+ $db2->open(URL, Bz\transactd::TYPE_SCHEMA_BDF);
817
+ $this->assertEquals($db2->stat(), Bz\transactd::STATUS_CANNOT_LOCK_TABLE);
818
+
819
+ $tb2 = $db->openTable(TABLENAME);
820
+ $this->assertEquals($db->stat(), 0);
821
+
748
822
  $tb->setKeyNum(0);
749
823
  $tb->seekFirst();
750
824
  $this->assertEquals($tb->stat(), 0);
751
- // ----------------------------------------------------
752
- // Change Index field
753
- // ----------------------------------------------------
754
- // Change data by another connection
755
- $tb2->setKeyNum(0);
756
- $tb2->seekFirst();
757
- $this->assertEquals($tb2->stat(), 0);
758
- $tb2->setFV(FDI_ID, $tb2->getFVint(FDI_ID) - 10);
759
- $tb2->update();
760
- $this->assertEquals($tb2->stat(), 0);
761
- // ----------------------------------------------------
762
- // Change same record data by original connection
763
- $tb->setFV(FDI_ID, $tb->getFVint(FDI_ID) - 8);
825
+
826
+ $tb->setFV(FDI_NAME, 'ABC123');
764
827
  $tb->update();
765
- $this->assertEquals($tb->stat(), transactd::STATUS_CHANGE_CONFLICT);
766
- // ----------------------------------------------------
767
- // Change Non index field
768
- // ----------------------------------------------------
769
- // Change data by another connection
770
- $tb->seekFirst();
771
828
  $this->assertEquals($tb->stat(), 0);
829
+
830
+ $tb2->setKeyNum(0);
772
831
  $tb2->seekFirst();
773
832
  $this->assertEquals($tb2->stat(), 0);
774
- $tb2->setFV(FDI_NAME, $tb2->getFVint(FDI_ID) - 10);
833
+ $tb2->setFV(FDI_NAME, 'ABC124');
775
834
  $tb2->update();
776
835
  $this->assertEquals($tb2->stat(), 0);
777
- // ----------------------------------------------------
778
- // Change same record data by original connection
779
- $tb->setFV(FDI_NAME, $tb->getFVint(FDI_NAME) - 8);
780
- $tb->update();
781
- $this->assertEquals($tb->stat(), transactd::STATUS_CHANGE_CONFLICT);
782
- // ----------------------------------------------------
836
+
783
837
  $tb->close();
784
838
  $tb2->close();
785
- $this->deleteDbObj($db);
786
- $this->deleteDbObj($db2);
839
+ $db->close();
840
+ $db2->close();
841
+
842
+ // table mode exclusive
843
+ $db = new Bz\database();
844
+ $db->open(URL, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_READONLY);
845
+ $this->assertEquals($db->stat(), 0);
846
+ $tb = $db->openTable(TABLENAME, Bz\transactd::TD_OPEN_EXCLUSIVE);
847
+ $this->assertEquals($db->stat(), 0);
848
+
849
+ $db2 = new Bz\database();
850
+ $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
851
+ $this->assertEquals($db2->stat(), 0);
852
+ $db2->open(URL, Bz\transactd::TYPE_SCHEMA_BDF);
853
+ $this->assertEquals($db2->stat(), 0);
854
+
855
+ // Can not open table from other connections.
856
+ $tb2 = $db2->openTable(TABLENAME);
857
+ $this->assertEquals($db2->stat(), Bz\transactd::STATUS_CANNOT_LOCK_TABLE);
858
+
859
+ // Can open table from the same connection.
860
+ $tb3 = $db->openTable(TABLENAME);
861
+ $this->assertEquals($db->stat(), 0);
862
+
863
+ $tb->close();
864
+ if ($tb2 != NULL) { $tb2->close(); }
865
+ $tb3->close();
866
+ $db->close();
867
+ $db2->close();
868
+
869
+ // reopen and update
870
+ $db = new Bz\database();
871
+ $db->open(URL);
872
+ $this->assertEquals($db->stat(), 0);
873
+ $tb = $db->openTable(TABLENAME);
874
+ $this->assertEquals($db->stat(), 0);
875
+
876
+ $tb->setKeyNum(0);
877
+ $tb->seekFirst();
878
+ $this->assertEquals($tb->stat(), 0);
879
+
880
+ $tb->setFV(FDI_NAME, 'ABC123');
881
+ $tb->update();
882
+ $this->assertEquals($tb->stat(), 0);
787
883
  }
788
884
  public function testInsert2()
789
885
  {
790
- $db = $this->getDbObj();
886
+ $db = new Bz\database();
791
887
  $tb = $this->openTable($db);
792
888
  $this->assertNotEquals($tb, NULL);
793
889
  $v = TEST_COUNT * 2;
@@ -804,17 +900,15 @@ class transactdTest extends PHPUnit_Framework_TestCase
804
900
  $tb->seekNext();
805
901
  $this->assertEquals($tb->getFVint(FDI_ID), 11);
806
902
  $db->endTrn();
807
- $tb->close();
808
- $this->deleteDbObj($db);
809
903
  }
810
904
  public function testDelete()
811
905
  {
812
- $db = $this->getDbObj();
906
+ $db = new Bz\database();
813
907
  $tb = $this->openTable($db);
814
908
  $this->assertNotEquals($tb, NULL);
815
909
  // estimate count
816
910
  $count = $tb->recordCount(true);
817
- $is_valid_count = (abs($count - TEST_COUNT - 3) < FIVE_PERCENT_OF_TEST_COUNT);
911
+ $is_valid_count = (abs($count - TEST_COUNT) < ALLOWABLE_ERROR_DISTANCE_IN_ESTIMATE_COUNT);
818
912
  $this->assertTrue($is_valid_count);
819
913
  if (! $is_valid_count)
820
914
  print("true record count = " . (TEST_COUNT + 3) . " and estimate recordCount count = " . $count);
@@ -837,7 +931,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
837
931
  $tb->clearBuffer();
838
932
  $tb->setFV(FDI_ID, $vv);
839
933
  $tb->seek();
840
- $this->assertEquals($tb->stat(), transactd::STATUS_NOT_FOUND_TI);
934
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_NOT_FOUND_TI);
841
935
  $db->beginTrn();
842
936
  $tb->stepFirst();
843
937
  while ($tb->stat() == 0)
@@ -849,56 +943,48 @@ class transactdTest extends PHPUnit_Framework_TestCase
849
943
  $this->assertEquals($tb->stat(), 9);
850
944
  $db->endTrn();
851
945
  $this->assertEquals($tb->recordCount(false), 0);
852
- $tb->close();
853
- $this->deleteDbObj($db);
854
946
  }
855
947
  public function testSetOwner()
856
948
  {
857
- $db = $this->getDbObj();
949
+ $db = new Bz\database();
858
950
  $tb = $this->openTable($db);
859
951
  $this->assertNotEquals($tb, NULL);
860
952
  $tb->setOwnerName("ABCDEFG");
861
953
  $this->assertEquals($tb->stat(), 0);
862
954
  $tb->clearOwnerName();
863
955
  $this->assertEquals($tb->stat(), 0);
864
- $tb->close();
865
- $this->deleteDbObj($db);
866
956
  }
867
957
  public function testDropIndex()
868
958
  {
869
- $db = $this->getDbObj();
959
+ $db = new Bz\database();
870
960
  $tb = $this->openTable($db);
871
961
  $this->assertNotEquals($tb, NULL);
872
962
  $tb->dropIndex(false);
873
963
  $this->assertEquals($tb->stat(), 0);
874
- $tb->close();
875
- $this->deleteDbObj($db);
876
964
  }
877
965
  public function testDropDatabase()
878
966
  {
879
- $db = $this->getDbObj();
967
+ $db = new Bz\database();
880
968
  $this->dropDatabase($db);
881
- $this->deleteDbObj($db);
882
969
  }
883
970
  public function testLogin()
884
971
  {
885
- $db = $this->getDbObj();
972
+ $db = new Bz\database();
886
973
  $db->connect(PROTOCOL . HOSTNAME);
887
974
  $this->assertEquals($db->stat(), 0);
888
975
  if ($db->stat() == 0)
889
976
  {
890
977
  // second connection
891
- $db2 = $this->getDbObj();
978
+ $db2 = new Bz\database();
892
979
  $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
893
980
  $this->assertEquals($db->stat(), 0);
894
- $this->deleteDbObj($db2);
895
981
  $db->disconnect(PROTOCOL . HOSTNAME);
896
982
  $this->assertEquals($db->stat(), 0);
897
983
  }
898
984
  // invalid host name
899
985
  $db->connect(PROTOCOL . 'localhost123/');
900
- $is_valid_stat = ($db->stat() == transactd::ERROR_TD_INVALID_CLINETHOST) ||
901
- ($db->stat() == transactd::ERROR_TD_HOSTNAME_NOT_FOUND);
986
+ $is_valid_stat = ($db->stat() == Bz\transactd::ERROR_TD_INVALID_CLINETHOST) ||
987
+ ($db->stat() == Bz\transactd::ERROR_TD_HOSTNAME_NOT_FOUND);
902
988
  $this->assertTrue($is_valid_stat);
903
989
  if (! $is_valid_stat)
904
990
  print('bad host $db->stat() = ' . $db->stat());
@@ -922,7 +1008,6 @@ class transactdTest extends PHPUnit_Framework_TestCase
922
1008
  $this->assertEquals($db->stat(), 25000 + 1049);
923
1009
  $db->disconnect(PROTOCOL . HOSTNAME . DBNAME);
924
1010
  $this->assertEquals($db->stat(), 0);
925
- $this->deleteDbObj($db);
926
1011
  }
927
1012
 
928
1013
  /* -----------------------------------------------------
@@ -936,7 +1021,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
936
1021
  private function isUtf16leSupport($db)
937
1022
  {
938
1023
  // CHARSET_UTF16LE supported on MySQL 5.6 or later
939
- $vv = new btrVersions();
1024
+ $vv = new Bz\btrVersions();
940
1025
  $db->getBtrVersion($vv);
941
1026
  $server_ver = $vv->version(1);
942
1027
  if ('M' == chr($server_ver->type))
@@ -954,7 +1039,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
954
1039
  // create table
955
1040
  $dbdef = $db->dbDef();
956
1041
  $this->assertNotEquals($dbdef, NULL);
957
- $td = new tabledef();
1042
+ $td = new Bz\tabledef();
958
1043
  $td->setTableName($name);
959
1044
  $td->setFileName($name . '.dat');
960
1045
  $td->id = $id;
@@ -968,7 +1053,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
968
1053
  // id
969
1054
  $fd = $dbdef->insertField($id, 0);
970
1055
  $fd->setName('id');
971
- $fd->type = transactd::ft_integer;
1056
+ $fd->type = Bz\transactd::ft_integer;
972
1057
  $fd->len = 4;
973
1058
  $dbdef->updateTableDef($id);
974
1059
  $this->assertEquals($dbdef->stat(), 0);
@@ -976,16 +1061,16 @@ class transactdTest extends PHPUnit_Framework_TestCase
976
1061
  $fd = $dbdef->insertField($id, 1);
977
1062
  $fd->setName('name');
978
1063
  $fd->type = $fieldType;
979
- if ($fieldType == transactd::ft_mywvarchar)
980
- $fd->len = 1 + transactd::charsize(transactd::CHARSET_UTF16LE) * 3; // max 3 char len byte
981
- elseif ($fieldType == transactd::ft_mywvarbinary)
982
- $fd->len = 1 + transactd::charsize(transactd::CHARSET_UTF16LE) * 3; // max 6 char len byte
983
- elseif ($fieldType == transactd::ft_myvarchar)
1064
+ if ($fieldType == Bz\transactd::ft_mywvarchar)
1065
+ $fd->len = 1 + Bz\transactd::charsize(Bz\transactd::CHARSET_UTF16LE) * 3; // max 3 char len byte
1066
+ elseif ($fieldType == Bz\transactd::ft_mywvarbinary)
1067
+ $fd->len = 1 + Bz\transactd::charsize(Bz\transactd::CHARSET_UTF16LE) * 3; // max 6 char len byte
1068
+ elseif ($fieldType == Bz\transactd::ft_myvarchar)
984
1069
  {
985
- if ($charset == transactd::CHARSET_CP932)
986
- $fd->len = 1 + transactd::charsize(transactd::CHARSET_CP932) * 3; // max 6 char len byte
987
- elseif($charset == transactd::CHARSET_UTF8B4)
988
- $fd->len = 1 + transactd::charsize(transactd::CHARSET_UTF8B4) * 3; // max 6 char len byte
1070
+ if ($charset == Bz\transactd::CHARSET_CP932)
1071
+ $fd->len = 1 + Bz\transactd::charsize(Bz\transactd::CHARSET_CP932) * 3; // max 6 char len byte
1072
+ elseif($charset == Bz\transactd::CHARSET_UTF8B4)
1073
+ $fd->len = 1 + Bz\transactd::charsize(Bz\transactd::CHARSET_UTF8B4) * 3; // max 6 char len byte
989
1074
  }
990
1075
  else
991
1076
  $fd->len = 7; // max 6 char len byte
@@ -994,7 +1079,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
994
1079
  // groupid
995
1080
  $fd = $dbdef->insertField($id, 2);
996
1081
  $fd->setName('groupid');
997
- $fd->type = transactd::ft_integer;
1082
+ $fd->type = Bz\transactd::ft_integer;
998
1083
  $fd->len = 4;
999
1084
  $dbdef->updateTableDef($id);
1000
1085
  $this->assertEquals($dbdef->stat(), 0);
@@ -1023,14 +1108,13 @@ class transactdTest extends PHPUnit_Framework_TestCase
1023
1108
  // open
1024
1109
  $tb = $db->openTable($id);
1025
1110
  $this->assertEquals($db->stat(), 0);
1026
- $tb->close();
1027
1111
  }
1028
1112
 
1029
1113
  public function testCreateDatabaseVar()
1030
1114
  {
1031
- $db = $this->getDbObj();
1115
+ $db = new Bz\database();
1032
1116
  $db->create(URL_VAR);
1033
- if ($db->stat() == transactd::STATUS_TABLE_EXISTS_ERROR)
1117
+ if ($db->stat() == Bz\transactd::STATUS_TABLE_EXISTS_ERROR)
1034
1118
  {
1035
1119
  $this->testDropDatabaseVar();
1036
1120
  $db->create(URL_VAR);
@@ -1038,22 +1122,21 @@ class transactdTest extends PHPUnit_Framework_TestCase
1038
1122
  $this->assertEquals($db->stat(), 0);
1039
1123
  if (0 == $db->stat())
1040
1124
  {
1041
- $db->open(URL_VAR, 0, 0);
1125
+ $db->open(URL_VAR, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_NORMAL);
1042
1126
  $this->assertEquals($db->stat(), 0);
1043
1127
  }
1044
1128
  if (0 == $db->stat())
1045
1129
  {
1046
- $this->createVarTable($db, 1, 'user1', transactd::ft_myvarchar, transactd::CHARSET_CP932);
1047
- $this->createVarTable($db, 2, 'user2', transactd::ft_myvarbinary, transactd::CHARSET_CP932);
1130
+ $this->createVarTable($db, 1, 'user1', Bz\transactd::ft_myvarchar, Bz\transactd::CHARSET_CP932);
1131
+ $this->createVarTable($db, 2, 'user2', Bz\transactd::ft_myvarbinary, Bz\transactd::CHARSET_CP932);
1048
1132
  if ($this->isUtf16leSupport($db))
1049
- $this->createVarTable($db, 3, 'user3', transactd::ft_mywvarchar, transactd::CHARSET_CP932);
1050
- $this->createVarTable($db, 4, 'user4', transactd::ft_mywvarbinary, transactd::CHARSET_CP932);
1051
- $this->createVarTable($db, 5, 'user5', transactd::ft_myvarchar, transactd::CHARSET_UTF8B4);
1133
+ $this->createVarTable($db, 3, 'user3', Bz\transactd::ft_mywvarchar, Bz\transactd::CHARSET_CP932);
1134
+ $this->createVarTable($db, 4, 'user4', Bz\transactd::ft_mywvarbinary, Bz\transactd::CHARSET_CP932);
1135
+ $this->createVarTable($db, 5, 'user5', Bz\transactd::ft_myvarchar, Bz\transactd::CHARSET_UTF8B4);
1052
1136
  $db->close();
1053
1137
  $db->open(URL_VAR);
1054
1138
  $this->assertEquals($db->stat(), 0);
1055
1139
  }
1056
- $this->deleteDbObj($db);
1057
1140
  }
1058
1141
  private function setGetVar($tb, $unicodeField, $varCharField)
1059
1142
  {
@@ -1205,7 +1288,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1205
1288
  }
1206
1289
  public function testVarField()
1207
1290
  {
1208
- $db = $this->getDbObj();
1291
+ $db = new Bz\database();
1209
1292
  $db->open(URL_VAR);
1210
1293
  $this->assertEquals($db->stat(), 0);
1211
1294
  $tb = $db->openTable('user1');
@@ -1236,7 +1319,6 @@ class transactdTest extends PHPUnit_Framework_TestCase
1236
1319
  // utf8 varchar
1237
1320
  $this->setGetVar($tb, true, true);
1238
1321
  $tb->close();
1239
- $this->deleteDbObj($db);
1240
1322
  }
1241
1323
  private function doVarInsert($db, $name, $codePage, $str, $startid, $endid, $bulk)
1242
1324
  {
@@ -1255,11 +1337,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
1255
1337
  if ($bulk)
1256
1338
  $tb->commitBulkInsert();
1257
1339
  $this->assertEquals($tb->stat(), 0);
1258
- $tb->close();
1259
1340
  }
1260
1341
  public function testVarInsert()
1261
1342
  {
1262
- $db = $this->getDbObj();
1343
+ $db = new Bz\database();
1263
1344
  $startid = 1;
1264
1345
  $bulk = false;
1265
1346
  $str = '漢字文字のテスト'; // too long kanji
@@ -1269,30 +1350,29 @@ class transactdTest extends PHPUnit_Framework_TestCase
1269
1350
  if (0 == $db->stat())
1270
1351
  {
1271
1352
  $utf16leSupport = $this->isUtf16leSupport($db);
1272
- $this->doVarInsert($db, 'user1', transactd::CP_ACP, $str, $startid, $startid, $bulk);
1273
- $this->doVarInsert($db, 'user2', transactd::CP_ACP, $str, $startid, $startid, $bulk);
1353
+ $this->doVarInsert($db, 'user1', Bz\transactd::CP_ACP, $str, $startid, $startid, $bulk);
1354
+ $this->doVarInsert($db, 'user2', Bz\transactd::CP_ACP, $str, $startid, $startid, $bulk);
1274
1355
  if ($utf16leSupport)
1275
- $this->doVarInsert($db, 'user3', transactd::CP_ACP, $str, $startid, $startid, $bulk);
1276
- $this->doVarInsert($db, 'user4', transactd::CP_ACP, $str, $startid, $startid, $bulk);
1277
- $this->doVarInsert($db, 'user5', transactd::CP_UTF8, $str, $startid, $startid, $bulk);
1356
+ $this->doVarInsert($db, 'user3', Bz\transactd::CP_ACP, $str, $startid, $startid, $bulk);
1357
+ $this->doVarInsert($db, 'user4', Bz\transactd::CP_ACP, $str, $startid, $startid, $bulk);
1358
+ $this->doVarInsert($db, 'user5', Bz\transactd::CP_UTF8, $str, $startid, $startid, $bulk);
1278
1359
  $startid = $startid + 1;
1279
- $this->doVarInsert($db, 'user1', transactd::CP_ACP, $str2, $startid, $startid, $bulk);
1280
- $this->doVarInsert($db, 'user2', transactd::CP_ACP, $str2, $startid, $startid, $bulk);
1360
+ $this->doVarInsert($db, 'user1', Bz\transactd::CP_ACP, $str2, $startid, $startid, $bulk);
1361
+ $this->doVarInsert($db, 'user2', Bz\transactd::CP_ACP, $str2, $startid, $startid, $bulk);
1281
1362
  if ($utf16leSupport)
1282
- $this->doVarInsert($db, 'user3', transactd::CP_ACP, $str2, $startid, $startid, $bulk);
1283
- $this->doVarInsert($db, 'user4', transactd::CP_ACP, $str2, $startid, $startid, $bulk);
1284
- $this->doVarInsert($db, 'user5', transactd::CP_UTF8, $str2, $startid, $startid, $bulk);
1363
+ $this->doVarInsert($db, 'user3', Bz\transactd::CP_ACP, $str2, $startid, $startid, $bulk);
1364
+ $this->doVarInsert($db, 'user4', Bz\transactd::CP_ACP, $str2, $startid, $startid, $bulk);
1365
+ $this->doVarInsert($db, 'user5', Bz\transactd::CP_UTF8, $str2, $startid, $startid, $bulk);
1285
1366
  $startid = $startid + 1;
1286
1367
  $bulk = true;
1287
1368
  $endid = 1000;
1288
- $this->doVarInsert($db, 'user1', transactd::CP_ACP, '', $startid, $endid, $bulk);
1289
- $this->doVarInsert($db, 'user2', transactd::CP_ACP, '', $startid, $endid, $bulk);
1369
+ $this->doVarInsert($db, 'user1', Bz\transactd::CP_ACP, '', $startid, $endid, $bulk);
1370
+ $this->doVarInsert($db, 'user2', Bz\transactd::CP_ACP, '', $startid, $endid, $bulk);
1290
1371
  if ($utf16leSupport)
1291
- $this->doVarInsert($db, 'user3', transactd::CP_ACP, '', $startid, $endid, $bulk);
1292
- $this->doVarInsert($db, 'user4', transactd::CP_ACP, '', $startid, $endid, $bulk);
1293
- $this->doVarInsert($db, 'user5', transactd::CP_UTF8, '', $startid, $endid, $bulk);
1372
+ $this->doVarInsert($db, 'user3', Bz\transactd::CP_ACP, '', $startid, $endid, $bulk);
1373
+ $this->doVarInsert($db, 'user4', Bz\transactd::CP_ACP, '', $startid, $endid, $bulk);
1374
+ $this->doVarInsert($db, 'user5', Bz\transactd::CP_UTF8, '', $startid, $endid, $bulk);
1294
1375
  }
1295
- $this->deleteDbObj($db);
1296
1376
  }
1297
1377
  private function doVarRead($db, $name, $codePage, $str, $num, $ky)
1298
1378
  {
@@ -1317,11 +1397,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
1317
1397
  $this->assertTrue($is_valid_value);
1318
1398
  // test read of second field
1319
1399
  $this->assertEquals($tb->getFVint(FDI_GROUP), ($num + 10));
1320
- $tb->close();
1321
1400
  }
1322
1401
  public function testVarRead()
1323
1402
  {
1324
- $db = $this->getDbObj();
1403
+ $db = new Bz\database();
1325
1404
  $str = '漢字文';
1326
1405
  $str3 = '漢字文字のテ';
1327
1406
  $str2 ='123';
@@ -1334,29 +1413,28 @@ class transactdTest extends PHPUnit_Framework_TestCase
1334
1413
  $num = 1;
1335
1414
  $ky = 0;
1336
1415
  // too long string
1337
- $this->doVarRead($db, 'user1', transactd::CP_ACP, $str, $num, $ky);
1338
- $this->doVarRead($db, 'user2', transactd::CP_ACP, $str, $num, $ky);
1416
+ $this->doVarRead($db, 'user1', Bz\transactd::CP_ACP, $str, $num, $ky);
1417
+ $this->doVarRead($db, 'user2', Bz\transactd::CP_ACP, $str, $num, $ky);
1339
1418
  if ($utf16leSupport)
1340
- $this->doVarRead($db, 'user3', transactd::CP_ACP, $str, $num, $ky);
1341
- $this->doVarRead($db, 'user4', transactd::CP_ACP, $str3, $num, $ky);
1342
- $this->doVarRead($db, 'user5', transactd::CP_UTF8, $str, $num, $ky);
1419
+ $this->doVarRead($db, 'user3', Bz\transactd::CP_ACP, $str, $num, $ky);
1420
+ $this->doVarRead($db, 'user4', Bz\transactd::CP_ACP, $str3, $num, $ky);
1421
+ $this->doVarRead($db, 'user5', Bz\transactd::CP_UTF8, $str, $num, $ky);
1343
1422
  // short string
1344
1423
  $num = $num + 1;
1345
- $this->doVarRead($db, 'user1', transactd::CP_ACP, $str2, $num, $ky);
1346
- $this->doVarRead($db, 'user2', transactd::CP_ACP, $str4, $num, $ky);
1424
+ $this->doVarRead($db, 'user1', Bz\transactd::CP_ACP, $str2, $num, $ky);
1425
+ $this->doVarRead($db, 'user2', Bz\transactd::CP_ACP, $str4, $num, $ky);
1347
1426
  if ($utf16leSupport)
1348
- $this->doVarRead($db, 'user3', transactd::CP_ACP, $str2, $num, $ky);
1349
- $this->doVarRead($db, 'user4', transactd::CP_ACP, $str4, $num, $ky);
1350
- $this->doVarRead($db, 'user5', transactd::CP_UTF8, $str2, $num, $ky);
1427
+ $this->doVarRead($db, 'user3', Bz\transactd::CP_ACP, $str2, $num, $ky);
1428
+ $this->doVarRead($db, 'user4', Bz\transactd::CP_ACP, $str4, $num, $ky);
1429
+ $this->doVarRead($db, 'user5', Bz\transactd::CP_UTF8, $str2, $num, $ky);
1351
1430
  $ky = 1;
1352
- $this->doVarRead($db, 'user1', transactd::CP_ACP, '120', 120, $ky);
1353
- $this->doVarRead($db, 'user2', transactd::CP_ACP, '120', 120, $ky);
1431
+ $this->doVarRead($db, 'user1', Bz\transactd::CP_ACP, '120', 120, $ky);
1432
+ $this->doVarRead($db, 'user2', Bz\transactd::CP_ACP, '120', 120, $ky);
1354
1433
  if ($utf16leSupport)
1355
- $this->doVarRead($db, 'user3', transactd::CP_ACP, '120', 120, $ky);
1356
- $this->doVarRead($db, 'user4', transactd::CP_ACP, '120', 120, $ky);
1357
- $this->doVarRead($db, 'user5', transactd::CP_UTF8, '120', 120, $ky);
1434
+ $this->doVarRead($db, 'user3', Bz\transactd::CP_ACP, '120', 120, $ky);
1435
+ $this->doVarRead($db, 'user4', Bz\transactd::CP_ACP, '120', 120, $ky);
1436
+ $this->doVarRead($db, 'user5', Bz\transactd::CP_UTF8, '120', 120, $ky);
1358
1437
  }
1359
- $this->deleteDbObj($db);
1360
1438
  }
1361
1439
  private function doVarFilter($db, $name, $codePage, $str, $num, $ky)
1362
1440
  {
@@ -1406,11 +1484,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
1406
1484
  $tb->setFV(FDI_NAME, $str);
1407
1485
  $tb->setFV(FDI_GROUP, $v);
1408
1486
  }
1409
- $tb->close();
1410
1487
  }
1411
1488
  public function testFilterVar()
1412
1489
  {
1413
- $db = $this->getDbObj();
1490
+ $db = new Bz\database();
1414
1491
  $db->open(URL_VAR);
1415
1492
  $this->assertEquals($db->stat(), 0);
1416
1493
  if (0 == $db->stat())
@@ -1422,41 +1499,39 @@ class transactdTest extends PHPUnit_Framework_TestCase
1422
1499
  $utf16leSupport = $this->isUtf16leSupport($db);
1423
1500
  $num = 10;
1424
1501
  $ky = 0;
1425
- $this->doVarFilter($db, 'user1', transactd::CP_ACP, $str, $num, $ky);
1426
- $this->doVarFilter($db, 'user2', transactd::CP_ACP, $str, $num, $ky);
1502
+ $this->doVarFilter($db, 'user1', Bz\transactd::CP_ACP, $str, $num, $ky);
1503
+ $this->doVarFilter($db, 'user2', Bz\transactd::CP_ACP, $str, $num, $ky);
1427
1504
  if ($utf16leSupport)
1428
- $this->doVarFilter($db, 'user3', transactd::CP_ACP, $str, $num, $ky);
1429
- $this->doVarFilter($db, 'user4', transactd::CP_ACP, $str3, $num, $ky);
1430
- $this->doVarFilter($db, 'user5', transactd::CP_UTF8, $str, $num, $ky);
1505
+ $this->doVarFilter($db, 'user3', Bz\transactd::CP_ACP, $str, $num, $ky);
1506
+ $this->doVarFilter($db, 'user4', Bz\transactd::CP_ACP, $str3, $num, $ky);
1507
+ $this->doVarFilter($db, 'user5', Bz\transactd::CP_UTF8, $str, $num, $ky);
1431
1508
  //if (UNICODE)
1432
1509
  //{
1433
1510
  // // short string
1434
1511
  // $num = $num + 1;
1435
- // $this->doVarFilter($db, 'user1', transactd::CP_ACP, $str2, $num, $ky);
1436
- // $this->doVarFilter($db, 'user2', transactd::CP_ACP, $str4, $num, $ky);
1512
+ // $this->doVarFilter($db, 'user1', Bz\transactd::CP_ACP, $str2, $num, $ky);
1513
+ // $this->doVarFilter($db, 'user2', Bz\transactd::CP_ACP, $str4, $num, $ky);
1437
1514
  // if ($utf16leSupport)
1438
- // $this->doVarFilter($db, 'user3', transactd::CP_ACP, $str2, $num, $ky);
1439
- // $this->doVarFilter($db, 'user4', transactd::CP_ACP, $str4, $num, $ky);
1440
- // $this->doVarFilter($db, 'user5', transactd::CP_UTF8, $str2, $num, $ky);
1515
+ // $this->doVarFilter($db, 'user3', Bz\transactd::CP_ACP, $str2, $num, $ky);
1516
+ // $this->doVarFilter($db, 'user4', Bz\transactd::CP_ACP, $str4, $num, $ky);
1517
+ // $this->doVarFilter($db, 'user5', Bz\transactd::CP_UTF8, $str2, $num, $ky);
1441
1518
  //}
1442
1519
  $ky = 1;
1443
- $this->doVarFilter($db, 'user1', transactd::CP_ACP, '120', 120, $ky);
1444
- $this->doVarFilter($db, 'user2', transactd::CP_ACP, '120', 120, $ky);
1520
+ $this->doVarFilter($db, 'user1', Bz\transactd::CP_ACP, '120', 120, $ky);
1521
+ $this->doVarFilter($db, 'user2', Bz\transactd::CP_ACP, '120', 120, $ky);
1445
1522
  if ($utf16leSupport)
1446
- $this->doVarFilter($db, 'user3', transactd::CP_ACP, '120', 120, $ky);
1447
- $this->doVarFilter($db, 'user4', transactd::CP_ACP, '120', 120, $ky);
1448
- $this->doVarFilter($db, 'user5', transactd::CP_UTF8, '120', 120, $ky);
1523
+ $this->doVarFilter($db, 'user3', Bz\transactd::CP_ACP, '120', 120, $ky);
1524
+ $this->doVarFilter($db, 'user4', Bz\transactd::CP_ACP, '120', 120, $ky);
1525
+ $this->doVarFilter($db, 'user5', Bz\transactd::CP_UTF8, '120', 120, $ky);
1449
1526
  }
1450
- $this->deleteDbObj($db);
1451
1527
  }
1452
1528
  public function testDropDatabaseVar()
1453
1529
  {
1454
- $db = $this->getDbObj();
1530
+ $db = new Bz\database();
1455
1531
  $db->open(URL_VAR);
1456
1532
  $this->assertEquals($db->stat(), 0);
1457
1533
  $db->drop();
1458
1534
  $this->assertEquals($db->stat(), 0);
1459
- $this->deleteDbObj($db);
1460
1535
  }
1461
1536
 
1462
1537
  /* -----------------------------------------------------
@@ -1467,18 +1542,18 @@ class transactdTest extends PHPUnit_Framework_TestCase
1467
1542
  {
1468
1543
  // create table
1469
1544
  $dbdef = $db->dbDef();
1470
- $td = new tabledef();
1545
+ $td = new Bz\tabledef();
1471
1546
  $td->setTableName($name);
1472
1547
  $td->setFileName($name . '.dat');
1473
1548
  $td->id = $id;
1474
1549
  $td->pageSize = 2048;
1475
- $td->charsetIndex = transactd::CHARSET_UTF8B4;
1476
- // $td->charsetIndex = transactd::CHARSET_CP932;
1550
+ $td->charsetIndex = Bz\transactd::CHARSET_UTF8B4;
1551
+ // $td->charsetIndex = Bz\transactd::CHARSET_CP932;
1477
1552
  $dbdef->insertTable($td);
1478
1553
  $this->assertEquals($dbdef->stat(), 0);
1479
1554
  $fd = $dbdef->insertField($id, 0);
1480
1555
  $fd->setName('id');
1481
- $fd->type = transactd::ft_integer;
1556
+ $fd->type = Bz\transactd::ft_integer;
1482
1557
  $fd->len = 4;
1483
1558
  $dbdef->updateTableDef($id);
1484
1559
  $this->assertEquals($dbdef->stat(), 0);
@@ -1628,7 +1703,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1628
1703
  $this->assertEquals($tb->getFVstr(FDI_NAMEW), 'おめでとうございます。');
1629
1704
 
1630
1705
  $tb->findNext();
1631
- $this->assertEquals($tb->stat(), transactd::STATUS_EOF);
1706
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_EOF);
1632
1707
 
1633
1708
  $tb->clearBuffer();
1634
1709
  $tb->seekLast();
@@ -1645,7 +1720,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1645
1720
  $this->assertEquals($tb->getFVstr(FDI_NAMEW), 'A123456');
1646
1721
 
1647
1722
  $tb->findPrev();
1648
- $this->assertEquals($tb->stat(), transactd::STATUS_EOF);
1723
+ $this->assertEquals($tb->stat(), Bz\transactd::STATUS_EOF);
1649
1724
 
1650
1725
  $tb->setFilter("name = 'あい'", 0, 10);
1651
1726
  $this->assertEquals($tb->recordCount(), 0);
@@ -1695,67 +1770,65 @@ class transactdTest extends PHPUnit_Framework_TestCase
1695
1770
  $this->doTestReadStringFilter($tb);
1696
1771
  $this->doTestSetStringFilter($tb);
1697
1772
  $this->doTestUpdateStringFilter($tb);
1698
- $tb->close();
1699
1773
  }
1700
1774
 
1701
1775
  public function testStringFilter()
1702
1776
  {
1703
- $db = $this->getDbObj();
1777
+ $db = new Bz\database();
1704
1778
  $db->create(URL_SF);
1705
- if ($db->stat() == transactd::STATUS_TABLE_EXISTS_ERROR)
1779
+ if ($db->stat() == Bz\transactd::STATUS_TABLE_EXISTS_ERROR)
1706
1780
  {
1707
1781
  $this->testDropDatabaseStringFilter();
1708
1782
  $db->create(URL_SF);
1709
1783
  }
1710
1784
  $this->assertEquals($db->stat(), 0);
1711
- $db->open(URL_SF, 0, 0);
1785
+ $db->open(URL_SF, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_NORMAL);
1712
1786
  $this->assertEquals($db->stat(), 0);
1713
- $this->doTestStringFilter($db, 1, 'zstring', transactd::ft_zstring, transactd::ft_wzstring);
1787
+ $this->doTestStringFilter($db, 1, 'zstring', Bz\transactd::ft_zstring, Bz\transactd::ft_wzstring);
1714
1788
  if ($this->isUtf16leSupport($db))
1715
- $this->doTestStringFilter($db, 2, 'myvarchar', transactd::ft_myvarchar, transactd::ft_mywvarchar);
1789
+ $this->doTestStringFilter($db, 2, 'myvarchar', Bz\transactd::ft_myvarchar, Bz\transactd::ft_mywvarchar);
1716
1790
  else
1717
- $this->doTestStringFilter($db, 2, 'myvarchar', transactd::ft_myvarchar, transactd::ft_myvarchar);
1718
- $this->doTestStringFilter($db, 3, 'mytext', transactd::ft_mytext, transactd::ft_myblob);
1719
- $this->deleteDbObj($db);
1791
+ $this->doTestStringFilter($db, 2, 'myvarchar', Bz\transactd::ft_myvarchar, Bz\transactd::ft_myvarchar);
1792
+ $this->doTestStringFilter($db, 3, 'mytext', Bz\transactd::ft_mytext, Bz\transactd::ft_myblob);
1720
1793
  }
1721
1794
 
1722
1795
  public function testDropDatabaseStringFilter()
1723
1796
  {
1724
- $db = $this->getDbObj();
1797
+ $db = new Bz\database();
1725
1798
  $db->open(URL_SF);
1726
1799
  $this->assertEquals($db->stat(), 0);
1727
1800
  $db->drop();
1728
1801
  $this->assertEquals($db->stat(), 0);
1729
- $this->deleteDbObj($db);
1730
1802
  }
1731
1803
 
1732
1804
  public function testQuery()
1733
1805
  {
1734
- $q = new queryBase();
1806
+ $q = new Bz\query();
1735
1807
  $q->queryString("id = 0 and name = 'Abc efg'");
1736
1808
  $this->assertEquals($q->toString(), "id = '0' and name = 'Abc efg'");
1737
1809
 
1738
1810
  $q->queryString('');
1739
- $q->where('id', '=', '0')->andWhere('name', '=', 'Abc efg');
1811
+ $q->where('id', '=', '0')->and_('name', '=', 'Abc efg');
1740
1812
  $this->assertEquals($q->toString(), "id = '0' and name = 'Abc efg'");
1741
1813
 
1742
1814
  $q->queryString("select id,name id = 0 AND name = 'Abc&' efg'");
1743
1815
  $this->assertEquals($q->toString(), "select id,name id = '0' AND name = 'Abc&' efg'");
1744
1816
 
1745
1817
  $q->queryString('');
1746
- $q->select('id', 'name')->where('id', '=', '0')->andWhere('name', '=', "Abc' efg");
1818
+ $q->select('id', 'name')->where('id', '=', '0')->and_('name', '=', "Abc' efg");
1747
1819
  $this->assertEquals($q->toString(), "select id,name id = '0' and name = 'Abc&' efg'");
1748
1820
 
1749
1821
  $q->queryString("select id,name id = 0 AND name = 'Abc&& efg'");
1750
1822
  $this->assertEquals($q->toString(), "select id,name id = '0' AND name = 'Abc&& efg'");
1751
1823
 
1752
1824
  $q->queryString('');
1753
- $q->select('id', 'name')->where('id', '=', '0')->andWhere('name', '=', 'Abc& efg');
1825
+ $q->select('id', 'name')->where('id', '=', '0')->and_('name', '=', 'Abc& efg');
1754
1826
  $this->assertEquals($q->toString(), "select id,name id = '0' and name = 'Abc&& efg'");
1755
1827
 
1756
1828
  $q->queryString('*');
1757
1829
  $this->assertEquals($q->toString(), '*');
1758
1830
 
1831
+ $q->queryString('');
1759
1832
  $q->all();
1760
1833
  $this->assertEquals($q->toString(), '*');
1761
1834
 
@@ -1777,7 +1850,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1777
1850
  $this->assertEquals($q->toString(), "select id,name,fc id = '2' and name = '3'");
1778
1851
 
1779
1852
  $q->queryString('');
1780
- $q->select('id', 'name', 'fc')->where('id', '=', '2')->andWhere('name', '=', '3');
1853
+ $q->select('id', 'name', 'fc')->where('id', '=', '2')->and_('name', '=', '3');
1781
1854
  $this->assertEquals($q->toString(), "select id,name,fc id = '2' and name = '3'");
1782
1855
 
1783
1856
  // IN include
@@ -1812,34 +1885,565 @@ class transactdTest extends PHPUnit_Framework_TestCase
1812
1885
  $q->queryString('');
1813
1886
  $q->where('in', '<>', '1');
1814
1887
  $this->assertEquals($q->toString(), "in <> '1'");
1888
+
1889
+ // test auto_escape
1890
+ $q->queryString("code = ab'c", true);
1891
+ $this->assertEquals($q->toString(), "code = 'ab&'c'");
1892
+
1893
+ $q->queryString("code = ab&c", true);
1894
+ $this->assertEquals($q->toString(), "code = 'ab&&c'");
1895
+
1896
+ $q->queryString("code = abc&", true);
1897
+ $this->assertEquals($q->toString(), "code = 'abc&&'");
1898
+ $q->queryString("code = abc&&", true);
1899
+ $this->assertEquals($q->toString(), "code = 'abc&&&&'");
1900
+
1901
+ $q->queryString("code = 'abc&'", true);
1902
+ $this->assertEquals($q->toString(), "code = 'abc&&'");
1903
+ $q->queryString("code = 'abc&&'", true);
1904
+ $this->assertEquals($q->toString(), "code = 'abc&&&&'");
1905
+
1906
+ $q->queryString("code = 'ab'c'", true);
1907
+ $this->assertEquals($q->toString(), "code = 'ab&'c'");
1908
+
1909
+ $q->queryString("code = 'abc''", true);
1910
+ $this->assertEquals($q->toString(), "code = 'abc&''");
1911
+
1912
+ $q->queryString("code = abc'", true);
1913
+ $this->assertEquals($q->toString(), "code = 'abc&''");
1914
+
1915
+ // Invalid single quote (') on the end of statement
1916
+ $q->queryString("code = 'abc", true);
1917
+ $this->assertEquals($q->toString(), "code = 'abc'");
1918
+
1919
+ $q->queryString("code = &abc", true);
1920
+ $this->assertEquals($q->toString(), "code = '&&abc'");
1815
1921
  }
1816
1922
 
1817
1923
  /* -----------------------------------------------------
1818
- transactd convert
1924
+ ActiveTable
1819
1925
  ----------------------------------------------------- */
1820
1926
 
1821
- public function testConvert()
1927
+ private function createQTuser($db)
1822
1928
  {
1823
- if (! $this->isWindows())
1929
+ $dbdef = $db->dbDef();
1930
+ $td = new Bz\tabledef();
1931
+ $td->setTableName('user');
1932
+ $td->setFileName('user.dat');
1933
+ $id = 1;
1934
+ $td->id = $id;
1935
+ $td->pageSize = 2048;
1936
+ $td->schemaCodePage = Bz\transactd::CP_UTF8;
1937
+ $td->charsetIndex = Bz\transactd::CHARSET_UTF8B4;
1938
+ $dbdef->insertTable($td);
1939
+ $this->assertEquals($dbdef->stat(), 0);
1940
+ // id field
1941
+ $fd = $dbdef->insertField($id, 0);
1942
+ $fd->setName('id');
1943
+ $fd->type = Bz\transactd::ft_autoinc;
1944
+ $fd->len = 4;
1945
+ // 名前 field
1946
+ $fd = $dbdef->insertField($id, 1);
1947
+ $fd->setName('名前');
1948
+ $fd->type = Bz\transactd::ft_myvarchar;
1949
+ $fd->setLenByCharnum(20);
1950
+ // group field
1951
+ $fd = $dbdef->insertField($id, 2);
1952
+ $fd->setName('group');
1953
+ $fd->type = Bz\transactd::ft_integer;
1954
+ $fd->len = 4;
1955
+ // tel field
1956
+ $fd = $dbdef->insertField($id, 3);
1957
+ $fd->setName('tel');
1958
+ $fd->type = Bz\transactd::ft_myvarchar;
1959
+ $fd->setLenByCharnum(20);
1960
+ // key 0 (primary) id
1961
+ $kd = $dbdef->insertKey($id, 0);
1962
+ $kd->segment(0)->fieldNum = 0;
1963
+ $kd->segment(0)->flags->bit8 = 1; // extended key type
1964
+ $kd->segment(0)->flags->bit1 = 1; // changeable
1965
+ $kd->segmentCount = 1;
1966
+ $td = $dbdef->tableDefs($id);
1967
+ $td->primaryKeyNum = 0;
1968
+ // key 1 group
1969
+ $kd = $dbdef->insertKey($id, 1);
1970
+ $kd->segment(0)->fieldNum = 2;
1971
+ $kd->segment(0)->flags->bit8 = 1; // extended key type
1972
+ $kd->segment(0)->flags->bit1 = 1; // changeable
1973
+ $kd->segment(0)->flags->bit0 = 1; // duplicatable
1974
+ $kd->segmentCount = 1;
1975
+ // update
1976
+ $dbdef->updateTableDef($id);
1977
+ $this->assertEquals($dbdef->stat(), 0);
1978
+ // open test
1979
+ $tb = $db->openTable($id);
1980
+ $this->assertEquals($db->stat(), 0);
1981
+ return true;
1982
+ }
1983
+ private function createQTgroups($db)
1984
+ {
1985
+ $dbdef = $db->dbDef();
1986
+ $td = new Bz\tabledef();
1987
+ $td->setTableName('groups');
1988
+ $td->setFileName('groups.dat');
1989
+ $id = 2;
1990
+ $td->id = $id;
1991
+ $td->pageSize = 2048;
1992
+ $td->schemaCodePage = Bz\transactd::CP_UTF8;
1993
+ $td->charsetIndex = Bz\transactd::CHARSET_UTF8B4;
1994
+ $dbdef->insertTable($td);
1995
+ $this->assertEquals($dbdef->stat(), 0);
1996
+ // code field
1997
+ $fd = $dbdef->insertField($id, 0);
1998
+ $fd->setName('code');
1999
+ $fd->type = Bz\transactd::ft_integer;
2000
+ $fd->len = 4;
2001
+ // name field
2002
+ $fd = $dbdef->insertField($id, 1);
2003
+ $fd->setName('name');
2004
+ $fd->type = Bz\transactd::ft_myvarbinary;
2005
+ $fd->len = 33;
2006
+ // key 0 (primary) code
2007
+ $kd = $dbdef->insertKey($id, 0);
2008
+ $kd->segment(0)->fieldNum = 0;
2009
+ $kd->segment(0)->flags->bit8 = 1; // extended key type
2010
+ $kd->segment(0)->flags->bit1 = 1; // changeable
2011
+ $kd->segmentCount = 1;
2012
+ $td = $dbdef->tableDefs($id);
2013
+ $td->primaryKeyNum = 0;
2014
+ // update
2015
+ $dbdef->updateTableDef($id);
2016
+ $this->assertEquals($dbdef->stat(), 0);
2017
+ // open test
2018
+ $tb = $db->openTable($id);
2019
+ $this->assertEquals($db->stat(), 0);
2020
+ return true;
2021
+ }
2022
+ private function createQTextention($db)
2023
+ {
2024
+ $dbdef = $db->dbDef();
2025
+ $td = new Bz\tabledef();
2026
+ $td->setTableName('extention');
2027
+ $td->setFileName('extention.dat');
2028
+ $id = 3;
2029
+ $td->id = $id;
2030
+ $td->pageSize = 2048;
2031
+ $td->schemaCodePage = Bz\transactd::CP_UTF8;
2032
+ $td->charsetIndex = Bz\transactd::CHARSET_UTF8B4;
2033
+ $dbdef->insertTable($td);
2034
+ $this->assertEquals($dbdef->stat(), 0);
2035
+ // id field
2036
+ $fd = $dbdef->insertField($id, 0);
2037
+ $fd->setName('id');
2038
+ $fd->type = Bz\transactd::ft_integer;
2039
+ $fd->len = 4;
2040
+ // comment field
2041
+ $fd = $dbdef->insertField($id, 1);
2042
+ $fd->setName('comment');
2043
+ $fd->type = Bz\transactd::ft_myvarchar;
2044
+ $fd->setLenByCharnum(60);
2045
+ // key 0 (primary) id
2046
+ $kd = $dbdef->insertKey($id, 0);
2047
+ $kd->segment(0)->fieldNum = 0;
2048
+ $kd->segment(0)->flags->bit8 = 1; // extended key type
2049
+ $kd->segment(0)->flags->bit1 = 1; // changeable
2050
+ $kd->segmentCount = 1;
2051
+ $td = $dbdef->tableDefs($id);
2052
+ $td->primaryKeyNum = 0;
2053
+ // update
2054
+ $dbdef->updateTableDef($id);
2055
+ $this->assertEquals($dbdef->stat(), 0);
2056
+ // open test
2057
+ $tb = $db->openTable($id);
2058
+ $this->assertEquals($db->stat(), 0);
2059
+ return true;
2060
+ }
2061
+ private function insertQT($db, $maxId)
2062
+ {
2063
+ $db->beginTrn();
2064
+ // insert user data
2065
+ $tb = $db->openTable('user', Bz\transactd::TD_OPEN_NORMAL);
2066
+ $this->assertEquals($db->stat(), 0);
2067
+ $tb->clearBuffer();
2068
+ for ($i = 1; $i <= $maxId; $i++)
1824
2069
  {
1825
- $enc_u8 = 'UTF-8';
1826
-
1827
- $u8 = mb_convert_encoding('123', $enc_u8);
1828
- $ret = transactd::u8tombc($u8, -1, '', 256);
1829
- $this->assertEquals($u8, $ret);
1830
-
1831
- $mbcKanji = [0x8A, 0xBF, 0x8E, 0x9A, 0x00];
1832
- $u8 = mb_convert_encoding('漢字', $enc_u8);
1833
- $ret = transactd::u8tombc($u8, -1, '', 256);
1834
- for ($i = 0; $i < strlen($ret); $i++)
1835
- $this->assertEquals(hexdec(bin2hex($ret{$i})), $mbcKanji[$i]);
1836
-
1837
- $mbc = $ret;
1838
- $u8Kanji = [0xe6 ,0xbc ,0xa2 ,0xe5 ,0xad ,0x97];
1839
- $ret = transactd::mbctou8($mbc, -1, '', 256);
1840
- for ($i = 0; $i < strlen($ret); $i++)
1841
- $this->assertEquals(hexdec(bin2hex($ret{$i})), $u8Kanji[$i]);
2070
+ $tb->setFV(0, $i);
2071
+ $tb->setFV(1, "$i user");
2072
+ $tb->setFV('group', (($i - 1) % 5) + 1);
2073
+ $tb->insert();
2074
+ $this->assertEquals($tb->stat(), 0);
1842
2075
  }
2076
+ $tb->close();
2077
+ // insert groups data
2078
+ $tb = $db->openTable('groups', Bz\transactd::TD_OPEN_NORMAL);
2079
+ $this->assertEquals($db->stat(), 0);
2080
+ $tb->clearBuffer();
2081
+ for ($i = 1; $i <= 100; $i++)
2082
+ {
2083
+ $tb->setFV(0, $i);
2084
+ $tb->setFV(1, "$i group");
2085
+ $tb->insert();
2086
+ $this->assertEquals($tb->stat(), 0);
2087
+ }
2088
+ $tb->close();
2089
+ // insert extention data
2090
+ $tb = $db->openTable('extention', Bz\transactd::TD_OPEN_NORMAL);
2091
+ $this->assertEquals($db->stat(), 0);
2092
+ $tb->clearBuffer();
2093
+ for ($i = 1; $i <= $maxId; $i++)
2094
+ {
2095
+ $tb->setFV(0, $i);
2096
+ $tb->setFV(1, "$i comment");
2097
+ $tb->insert();
2098
+ $this->assertEquals($tb->stat(), 0);
2099
+ }
2100
+ $tb->close();
2101
+ $db->endTrn();
1843
2102
  }
1844
2103
 
2104
+ public function testCreateQueryTest()
2105
+ {
2106
+ $db = new Bz\database();
2107
+ // check database existence
2108
+ $db->open(URL_QT, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_NORMAL);
2109
+ if ($db->stat() === 0) {
2110
+ return;
2111
+ }
2112
+ echo("\nDatabase " . DBNAME_QT . " not found\n");
2113
+ $db->create(URL_QT);
2114
+ $this->assertEquals($db->stat(), 0);
2115
+ $db->open(URL_QT, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_NORMAL);
2116
+ $this->assertEquals($db->stat(), 0);
2117
+ // create tables
2118
+ $this->createQTuser($db);
2119
+ $this->createQTgroups($db);
2120
+ $this->createQTextention($db);
2121
+ // insert data
2122
+ $this->insertQT($db, 20000);
2123
+ }
2124
+ public function testNewDelete()
2125
+ {
2126
+ $db = new Bz\database();
2127
+ $db->open(URL_QT);
2128
+ for ($i = 0; $i < 500; $i++)
2129
+ {
2130
+ $q = new Bz\query();
2131
+ $rq = new Bz\recordsetQuery();
2132
+ $gq = new Bz\groupQuery();
2133
+ $f = new Bz\fieldNames();
2134
+ $f->addValue('abc');
2135
+ $atu = new Bz\ActiveTable($db, 'user');
2136
+ $atu->index(0);
2137
+ $atg = new Bz\ActiveTable($db, 'groups');
2138
+ $atg->index(0);
2139
+ $fns = new Bz\fieldNames();
2140
+ $fns->addValue('a');
2141
+ $s = new Bz\sum($fns);
2142
+ $s = new Bz\count('a');
2143
+ $s = new Bz\avg($fns);
2144
+ $s = new Bz\min($fns);
2145
+ $s = new Bz\max($fns);
2146
+ $rs = new Bz\Recordset();
2147
+ }
2148
+ }
2149
+ public function testLoop()
2150
+ {
2151
+ $db = new Bz\database();
2152
+ $db->open(URL_QT);
2153
+ $this->assertEquals($db->stat(), 0);
2154
+ $atu = new Bz\ActiveTable($db, 'user');
2155
+ $q = new Bz\query();
2156
+
2157
+ $atu->alias('名前', 'name');
2158
+ $q->where('id', '<=', 15000);
2159
+ $rs = $atu->index(0)->keyValue(1)->read($q);
2160
+ //
2161
+ // loop fielddefs
2162
+ //
2163
+ $fds = $rs->fielddefs();
2164
+ // for
2165
+ for ($field_id = 0; $field_id < count($fds); $field_id++)
2166
+ {
2167
+ $field_name = $fds[$field_id]->name();
2168
+ //echo("$field_id : $field_name\n");
2169
+ }
2170
+ // foreach
2171
+ $field_id = 0;
2172
+ foreach ($fds as $fd)
2173
+ {
2174
+ $field_name = $fd->name();
2175
+ //echo("$field_id : $field_name\n");
2176
+ $field_id++;
2177
+ }
2178
+ // foreach KeyValue
2179
+ foreach ($fds as $field_id => $fd)
2180
+ {
2181
+ $field_name = $fd->name();
2182
+ //echo("$field_id : $field_name\n");
2183
+ }
2184
+ // generator
2185
+ $field_id = 0;
2186
+ foreach ($fds->range() as $fd)
2187
+ {
2188
+ $field_name = $fd->name();
2189
+ //echo("$field_id : $field_name\n");
2190
+ $field_id++;
2191
+ }
2192
+ // generator with range
2193
+ $field_id = 1;
2194
+ foreach ($fds->range(1, 2) as $fd)
2195
+ {
2196
+ $field_name = $fd->name();
2197
+ //echo("$field_id : $field_name\n");
2198
+ $field_id++;
2199
+ }
2200
+ //
2201
+ // loop Recordset and Record
2202
+ //
2203
+ // for
2204
+ for ($row_id = 0; $row_id < count($rs); $row_id++)
2205
+ {
2206
+ $record = $rs[$row_id];
2207
+ // for loop Record
2208
+ for ($field_id = 0; $field_id < count($record); $field_id++) {
2209
+ $field_name = $fds[$field_id]->name();
2210
+ $field_value = $record[$field_id];
2211
+ //if ($row_id < 5) { echo("rs[$row_id][$field_id:$field_name] $field_value\n"); }
2212
+ }
2213
+ }
2214
+ // foreach
2215
+ $row_id = 0;
2216
+ foreach ($rs as $record)
2217
+ {
2218
+ $field_id = 0;
2219
+ foreach ($record as $field_value) {
2220
+ $field_name = $fds[$field_id]->name();
2221
+ //if ($row_id < 5) { echo("rs[$row_id][$field_id:$field_name] $field_value\n"); }
2222
+ $field_id++;
2223
+ }
2224
+ $row_id++;
2225
+ }
2226
+ // foreach KeyValue
2227
+ foreach ($rs as $row_id => $record)
2228
+ {
2229
+ $field_id = 0;
2230
+ foreach ($record as $field_name => $field_value)
2231
+ {
2232
+ //if ($row_id < 5) { echo("rs[$row_id][$field_id:$field_name] $field_value\n"); }
2233
+ $field_id++;
2234
+ }
2235
+ }
2236
+ // generator
2237
+ $row_id = 0;
2238
+ foreach ($rs->range() as $record)
2239
+ {
2240
+ // values generator
2241
+ $field_id = 0;
2242
+ foreach ($record->values() as $field_value)
2243
+ {
2244
+ $field_name = $fds[$field_id]->name();
2245
+ //if ($row_id < 5) { echo("rs[$row_id][$field_id:$field_name] $field_value\n"); }
2246
+ $field_id++;
2247
+ }
2248
+ $row_id++;
2249
+ }
2250
+ // generator with range
2251
+ $row_id = 3;
2252
+ foreach ($rs->range(3, 100) as $record)
2253
+ {
2254
+ // keys generator
2255
+ $field_id = 0;
2256
+ foreach ($record->keys() as $field_name)
2257
+ {
2258
+ $field_value = $record[$field_id];
2259
+ //if ($row_id < 5) { echo("rs[$row_id][$field_id:$field_name] $field_value\n"); }
2260
+ $field_id++;
2261
+ }
2262
+ $row_id++;
2263
+ }
2264
+ }
2265
+ public function testJoin()
2266
+ {
2267
+ $db = new Bz\database();
2268
+ $db->open(URL_QT);
2269
+ $this->assertEquals($db->stat(), 0);
2270
+ $atu = new Bz\ActiveTable($db, 'user');
2271
+ $atg = new Bz\ActiveTable($db, 'groups');
2272
+ $ate = new Bz\ActiveTable($db, 'extention');
2273
+ $q = new Bz\query();
2274
+
2275
+ $atu->alias('名前', 'name');
2276
+ $q->select('id', 'name', 'group')->where('id', '<=', 15000);
2277
+ $rs = $atu->index(0)->keyValue(1)->read($q);
2278
+ $this->assertEquals($rs->size(), 15000);
2279
+
2280
+ // Join extention::comment
2281
+ $q->reset();
2282
+ $ate->index(0)->join($rs,
2283
+ $q->select('comment')->optimize(Bz\queryBase::joinHasOneOrHasMany), 'id');
2284
+ $this->assertEquals($rs->size(), 15000);
2285
+
2286
+ // reverse and get first (so it means 'get last')
2287
+ $last = $rs->reverse()->first();
2288
+ $this->assertEquals($last['id'], 15000);
2289
+ $this->assertEquals($last['comment'], '15000 comment');
2290
+
2291
+ // Join group::name
2292
+ $q->reset();
2293
+ $atg->alias('name', 'group_name');
2294
+ $atg->index(0)->join($rs, $q->select('group_name'), 'group');
2295
+ $this->assertEquals($rs->size(), 15000);
2296
+
2297
+ // get last (the rs is reversed, so it means 'get first')
2298
+ $first = $rs->last();
2299
+ $this->assertEquals($first['id'], 1);
2300
+ $this->assertEquals($first['comment'], '1 comment');
2301
+ $this->assertEquals($first['group_name'], '1 group');
2302
+
2303
+ // row in rs[15000 - 9]
2304
+ $rec = $rs[15000 - 9];
2305
+ $this->assertEquals($rec['group_name'], '4 group');
2306
+
2307
+ // orderby
2308
+ $rs->orderBy('group_name');
2309
+ for ($i = 0; $i < 15000 / 5; $i++)
2310
+ {
2311
+ $this->assertEquals($rs[$i]['group_name'], '1 group');
2312
+ }
2313
+ $this->assertEquals($rs[15000 / 5]['group_name'], '2 group');
2314
+ $this->assertEquals($rs[(15000 / 5) * 2]['group_name'], '3 group');
2315
+ $this->assertEquals($rs[(15000 / 5) * 3]['group_name'], '4 group');
2316
+ $this->assertEquals($rs[(15000 / 5) * 4]['group_name'], '5 group');
2317
+
2318
+ // union
2319
+ $q->reset();
2320
+ $q->select('id', 'name', 'group')->where('id', '<=', 16000);
2321
+ $rs2 = $atu->index(0)->keyValue(15001)->read($q);
2322
+ $this->assertEquals($rs2->size(), 1000);
2323
+ $q->reset();
2324
+ $ate->index(0)->join($rs2,
2325
+ $q->select('comment')->optimize(Bz\queryBase::joinHasOneOrHasMany), 'id');
2326
+ $this->assertEquals($rs2->size(), 1000);
2327
+ $q->reset();
2328
+ $atg->index(0)->join($rs2, $q->select('group_name'), 'group');
2329
+ $this->assertEquals($rs2->size(), 1000);
2330
+ $rs->unionRecordset($rs2);
2331
+ $this->assertEquals($rs->size(), 16000);
2332
+ // row in rs[15000]
2333
+ $this->assertEquals($rs[15000]['id'], 15001);
2334
+ // last
2335
+ $this->assertEquals($rs->last()['id'], 16000);
2336
+
2337
+ // group by
2338
+ $gq = new Bz\groupQuery();
2339
+ $gq->keyField('group', 'id');
2340
+ $count1 = new Bz\count('count');
2341
+ $gq->addFunction($count1);
2342
+
2343
+ $count2 = new Bz\count('group1_count');
2344
+ $count2->when('group', '=', 1);
2345
+ $gq->addFunction($count2);
2346
+
2347
+ $rs->groupBy($gq);
2348
+ $this->assertEquals($rs->size(), 16000);
2349
+ $this->assertEquals($rs[0]['group1_count'], 1);
2350
+
2351
+ // clone
2352
+ $rsv = clone $rs;
2353
+ $gq->reset();
2354
+ $count3 = new Bz\count('count3');
2355
+ $gq->addFunction($count3)->keyField('group');
2356
+ $rs->groupBy($gq);
2357
+ $this->assertEquals($rs->size(), 5);
2358
+ $this->assertEquals($rsv->size(), 16000);
2359
+
2360
+ // having
2361
+ $rq = new Bz\recordsetQuery();
2362
+ $rq->when('group1_count', '=', 1)->or_('group1_count', '=', 2);
2363
+ $rsv->matchBy($rq);
2364
+ $this->assertEquals($rsv->size(), 3200);
2365
+ $this->assertEquals(isset($rsv), true);
2366
+ unset($rsv);
2367
+ $this->assertEquals(isset($rsv), false);
2368
+
2369
+ // top
2370
+ $rs3 = new Bz\Recordset();
2371
+ $rs->top($rs3, 10);
2372
+ $this->assertEquals($rs3->size(), 5);
2373
+ $rs->top($rs3, 3);
2374
+ $this->assertEquals($rs3->size(), 3);
2375
+ $this->assertEquals($rs->size(), 5);
2376
+
2377
+ // query new / delete
2378
+ $q1 = new Bz\recordsetQuery();
2379
+ $q1->when('group1_count', '=', 1)->or_('group1_count', '=', 2);
2380
+ unset($q1);
2381
+
2382
+ $q2 = new Bz\query();
2383
+ $q2->where('group1_count', '=', 1)->or_('group1_count', '=', 2);
2384
+ unset($q2);
2385
+
2386
+ $q3 = new Bz\groupQuery();
2387
+ $q3->keyField('group', 'id');
2388
+ unset($q3);
2389
+ }
2390
+ public function testWritableRecord()
2391
+ {
2392
+ $db = new Bz\database();
2393
+ $db->open(URL_QT);
2394
+ $this->assertEquals($db->stat(), 0);
2395
+ $atu = new Bz\ActiveTable($db, 'user');
2396
+
2397
+ $rec = $atu->index(0)->getWritableRecord();
2398
+ $rec['id'] = 120000;
2399
+ $rec['名前'] = 'aiba';
2400
+ $rec->save();
2401
+
2402
+ $rec->clear();
2403
+ $this->assertNotEquals($rec['id'], 120000);
2404
+ $this->assertNotEquals($rec['名前'], 'aiba');
2405
+ $rec['id'] = 120000;
2406
+ $rec->read();
2407
+ $this->assertEquals($rec['id'], 120000);
2408
+ $this->assertEquals($rec['名前'], 'aiba');
2409
+
2410
+ $rec->clear();
2411
+ $rec['id'] = 120001;
2412
+ $rec['名前'] = 'oono';
2413
+ if (! $rec->read()) {
2414
+ $rec->insert();
2415
+ }
2416
+
2417
+ $rec->clear();
2418
+ $rec['id'] = 120001;
2419
+ $rec->read();
2420
+ $this->assertEquals($rec['id'], 120001);
2421
+ $this->assertEquals($rec['名前'], 'oono');
2422
+
2423
+ // update only changed filed
2424
+ $rec->clear();
2425
+ $rec['id'] = 120001;
2426
+ $rec['名前'] = 'matsumoto';
2427
+ $rec->update();
2428
+
2429
+ $rec->clear();
2430
+ $rec['id'] = 120001;
2431
+ $rec->read();
2432
+ $this->assertEquals($rec['id'], 120001);
2433
+ $this->assertEquals($rec['名前'], 'matsumoto');
2434
+
2435
+ $rec->del();
2436
+ $rec['id'] = 120000;
2437
+ $rec->del();
2438
+
2439
+ $rec->clear();
2440
+ $rec['id'] = 120001;
2441
+ $ret = $rec->read();
2442
+ $this->assertEquals($ret, false);
2443
+
2444
+ $rec->clear();
2445
+ $rec['id'] = 120000;
2446
+ $ret = $rec->read();
2447
+ $this->assertEquals($ret, false);
2448
+ }
1845
2449
  }