transactd 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/BUILD_UNIX-JA +46 -67
- data/BUILD_WIN-JA +106 -63
- data/CMakeLists.txt +40 -15
- data/README +219 -75
- data/README-JA +207 -76
- data/README_ORMSRCGEN +118 -0
- data/README_ORMSRCGEN-JA +115 -0
- data/bin/common/tdclc_32_2_0.dll +0 -0
- data/bin/common/tdclc_64_2_0.dll +0 -0
- data/build/common/check_for_link_iconv.cmake +18 -14
- data/build/common/create_symlink.cmake.in +25 -0
- data/build/common/get_boost_libs.cmake +23 -23
- data/build/common/options.cmake +0 -66
- data/build/common/smart_install.cmake +3 -3
- data/build/common/transactd.rc.in +15 -5
- data/build/common/transactd_cl_common.cmake +37 -18
- data/build/common/transactd_cl_output.cmake +55 -13
- data/build/common/transactd_common.cmake +108 -31
- data/build/swig/php/generate.cmake.in +15 -17
- data/build/swig/php/generate.cmd.in +15 -9
- data/build/swig/php/php.swg +124 -82
- data/build/swig/php/transactd.no_yield.php +4494 -0
- data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
- data/build/swig/php/transactd.no_yield.php.patch +685 -0
- data/build/swig/php/transactd.yield.php +4461 -0
- data/build/swig/php/transactd.yield.php.git.patch +652 -0
- data/build/swig/php/transactd.yield.php.patch +652 -0
- data/build/swig/referencecounter.h +79 -0
- data/build/swig/ruby/ruby.swg +226 -76
- data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
- data/build/swig/ruby/without_gvl.swg +87 -0
- data/build/swig/tdcl.i +659 -170
- data/build/swig/validatablepointer.h +91 -0
- data/build/tdclc/CMakeLists.txt +49 -34
- data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
- data/build/tdclc/tdclc.rc +0 -0
- data/build/tdclcpp/CMakeLists.txt +84 -20
- data/build/tdclcpp/tdclcpp.rc +0 -0
- data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
- data/build/tdclrb/CMakeLists.txt +84 -66
- data/build/tdclrb/bldgem/extconf.rb +28 -3
- data/build/tdclrb/gem/helper.rb +11 -1
- data/build/tdclrb/gem_output.cmake +20 -16
- data/index_ja.html +15 -0
- data/source/bzs/db/IBlobBuffer.h +15 -17
- data/source/bzs/db/blobBuffer.h +186 -140
- data/source/bzs/db/blobStructs.h +37 -37
- data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
- data/source/bzs/db/engine/mysql/bookmark.h +150 -147
- data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
- data/source/bzs/db/engine/mysql/database.h +608 -370
- data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
- data/source/bzs/db/engine/mysql/dbManager.h +115 -104
- data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
- data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
- data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
- data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
- data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
- data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
- data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
- data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
- data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
- data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
- data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
- data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
- data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
- data/source/bzs/db/protocol/tdap/client/client.h +361 -320
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
- data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
- data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
- data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
- data/source/bzs/db/protocol/tdap/client/database.h +141 -118
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
- data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
- data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
- data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
- data/source/bzs/db/protocol/tdap/client/export.h +35 -0
- data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
- data/source/bzs/db/protocol/tdap/client/field.h +393 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
- data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
- data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
- data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
- data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
- data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
- data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
- data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
- data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
- data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
- data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
- data/source/bzs/db/protocol/tdap/client/request.h +227 -170
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
- data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
- data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
- data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
- data/source/bzs/db/protocol/tdap/client/table.h +413 -87
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
- data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
- data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
- data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
- data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
- data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
- data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
- data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
- data/source/bzs/db/transactd/appBuilderImple.h +21 -20
- data/source/bzs/db/transactd/appModule.cpp +350 -98
- data/source/bzs/db/transactd/appModule.h +31 -37
- data/source/bzs/db/transactd/connManager.cpp +138 -135
- data/source/bzs/db/transactd/connManager.h +28 -21
- data/source/bzs/db/transactd/connectionRecord.h +39 -39
- data/source/bzs/db/transactd/transactd.cpp +217 -203
- data/source/bzs/env/boost_bcb_link.h +131 -0
- data/source/bzs/env/compiler.h +136 -79
- data/source/bzs/env/crosscompile.cpp +57 -57
- data/source/bzs/env/crosscompile.h +130 -115
- data/source/bzs/env/fileopen.h +7 -8
- data/source/bzs/env/mbcswchrLinux.cpp +4 -9
- data/source/bzs/env/mbcswchrLinux.h +37 -34
- data/source/bzs/env/tcharMinGW.h +59 -0
- data/source/bzs/env/tstring.h +90 -95
- data/source/bzs/example/changeSchema.cpp +22 -23
- data/source/bzs/example/changeSchema_c.cpp +22 -24
- data/source/bzs/example/connection_pool_c.cpp +49 -104
- data/source/bzs/example/createDatabase.cpp +40 -47
- data/source/bzs/example/createDatabase_c.cpp +38 -43
- data/source/bzs/example/deleteRecords.cpp +10 -15
- data/source/bzs/example/deleteRecords_c.cpp +10 -14
- data/source/bzs/example/dropDatabase.cpp +3 -9
- data/source/bzs/example/dropDatabase_c.cpp +5 -6
- data/source/bzs/example/insertRecords.cpp +37 -29
- data/source/bzs/example/insertRecords_c.cpp +19 -25
- data/source/bzs/example/ormap_c.cpp +621 -0
- data/source/bzs/example/queryData.cpp +371 -0
- data/source/bzs/example/queryData.h +16 -0
- data/source/bzs/example/query_c.cpp +109 -0
- data/source/bzs/example/readRecords.cpp +27 -27
- data/source/bzs/example/readRecords_c.cpp +25 -23
- data/source/bzs/example/updateRecords.cpp +16 -21
- data/source/bzs/example/updateRecords_c.cpp +8 -12
- data/source/bzs/example/update_with_transaction.cpp +21 -24
- data/source/bzs/example/update_with_transaction_c.cpp +12 -15
- data/source/bzs/example/useORMRecord.cpp +177 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
- data/source/bzs/netsvc/client/tcpClient.h +541 -489
- data/source/bzs/netsvc/server/IAppModule.h +119 -32
- data/source/bzs/netsvc/server/iserver.h +21 -23
- data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
- data/source/bzs/netsvc/server/serverCpt.h +41 -43
- data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
- data/source/bzs/netsvc/server/serverPipe.h +44 -45
- data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
- data/source/bzs/netsvc/server/serverTpool.h +38 -43
- data/source/bzs/rtl/benchmark.cpp +91 -31
- data/source/bzs/rtl/benchmark.h +76 -22
- data/source/bzs/rtl/datetime.cpp +231 -233
- data/source/bzs/rtl/datetime.h +16 -16
- data/source/bzs/rtl/debuglog.cpp +48 -51
- data/source/bzs/rtl/debuglog.h +55 -44
- data/source/bzs/rtl/exception.h +55 -48
- data/source/bzs/rtl/stl_uty.cpp +27 -28
- data/source/bzs/rtl/stl_uty.h +28 -29
- data/source/bzs/rtl/stringBuffers.cpp +8 -6
- data/source/bzs/rtl/stringBuffers.h +16 -9
- data/source/bzs/rtl/strtrim.cpp +90 -91
- data/source/bzs/rtl/strtrim.h +14 -16
- data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
- data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
- data/source/bzs/test/tdclphp/bench.php +357 -0
- data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
- data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
- data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
- data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
- data/source/bzs/test/tdclrb/prepare.rb +15 -12
- data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
- data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
- data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
- data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
- data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
- data/source/bzs/test/transactdBench/workerBase.h +88 -0
- data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
- data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
- data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
- data/source/global/ormsrcgen/confParam.h +80 -0
- data/source/global/ormsrcgen/fieldName.cpp +77 -0
- data/source/global/ormsrcgen/fieldName.h +43 -0
- data/source/global/ormsrcgen/main.cpp +196 -0
- data/source/global/ormsrcgen/srcgen.cpp +763 -0
- data/source/global/ormsrcgen/srcgen.h +72 -0
- data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
- data/source/global/ormsrcgen/template/template.cnf +38 -0
- data/source/global/querystmts/querystmts.cpp +237 -0
- data/source/global/tdclatl/ConnectParams.cpp +77 -0
- data/source/global/tdclatl/ConnectParams.h +70 -0
- data/source/global/tdclatl/Database.cpp +132 -128
- data/source/global/tdclatl/Database.h +60 -49
- data/source/global/tdclatl/DbDef.cpp +68 -64
- data/source/global/tdclatl/DbDef.h +36 -36
- data/source/global/tdclatl/Field.cpp +12 -17
- data/source/global/tdclatl/Field.h +15 -12
- data/source/global/tdclatl/FieldDef.cpp +75 -36
- data/source/global/tdclatl/FieldDef.h +38 -19
- data/source/global/tdclatl/FieldDefs.cpp +74 -0
- data/source/global/tdclatl/FieldDefs.h +56 -0
- data/source/global/tdclatl/FieldNames.cpp +99 -0
- data/source/global/tdclatl/FieldNames.h +66 -0
- data/source/global/tdclatl/Flags.cpp +75 -37
- data/source/global/tdclatl/Flags.h +13 -12
- data/source/global/tdclatl/GroupQuery.cpp +119 -0
- data/source/global/tdclatl/GroupQuery.h +65 -0
- data/source/global/tdclatl/KeyDef.cpp +15 -14
- data/source/global/tdclatl/KeyDef.h +20 -17
- data/source/global/tdclatl/KeySegment.cpp +13 -12
- data/source/global/tdclatl/PooledDbManager.cpp +223 -0
- data/source/global/tdclatl/PooledDbManager.h +76 -0
- data/source/global/tdclatl/QueryBase.cpp +206 -127
- data/source/global/tdclatl/QueryBase.h +55 -59
- data/source/global/tdclatl/Record.cpp +214 -0
- data/source/global/tdclatl/Record.h +96 -0
- data/source/global/tdclatl/Recordset.cpp +278 -0
- data/source/global/tdclatl/Recordset.h +83 -0
- data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
- data/source/global/tdclatl/RecordsetQuery.h +126 -0
- data/source/global/tdclatl/Table.cpp +57 -60
- data/source/global/tdclatl/Table.h +32 -29
- data/source/global/tdclatl/TableDef.cpp +63 -62
- data/source/global/tdclatl/TableDef.h +20 -22
- data/source/global/tdclatl/TdVersion.cpp +3 -3
- data/source/global/tdclatl/TdVersion.h +15 -11
- data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
- data/source/global/tdclatl/activeTable.cpp +355 -0
- data/source/global/tdclatl/activeTable.h +79 -0
- data/source/global/tdclatl/dllmain.cpp +4 -3
- data/source/global/tdclatl/dllmain.h +7 -6
- data/source/global/tdclatl/keySegment.h +22 -18
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/stdafx.h +6 -4
- data/source/global/tdclatl/targetver.h +0 -1
- data/source/global/tdclatl/tdclatl.cpp +10 -5
- data/source/global/tdclatl/tdclatl.idl +530 -14
- data/source/linux/charsetConvert.h +78 -79
- data/source/linux/linuxTypes.h +9 -12
- data/source/linux/tchar.h +168 -166
- data/transactd.gemspec +24 -16
- metadata +98 -12
- data/bin/common/tdclc_32_1_2.dll +0 -0
- data/bin/common/tdclc_64_1_2.dll +0 -0
- data/build/tdclc/tdclc_32.cbproj +0 -173
- data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
- data/build/tdclrb/GEM_VERSION +0 -3
- data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
- 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 =
|
|
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 =
|
|
149
|
+
$db = new Bz\database();
|
|
158
150
|
$this->createTable($db);
|
|
159
|
-
$this->deleteDbObj($db);
|
|
160
151
|
}
|
|
161
|
-
|
|
152
|
+
// open database, not call close explicitly
|
|
153
|
+
public function testOpenDatabase()
|
|
162
154
|
{
|
|
163
|
-
$db =
|
|
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
|
-
$
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
291
|
-
$q->
|
|
292
|
-
$q->
|
|
293
|
-
$q->
|
|
294
|
-
$q->
|
|
295
|
-
$q->
|
|
296
|
-
$q->
|
|
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->
|
|
373
|
+
$q->addSeekKeyValue('1', true);
|
|
326
374
|
for($i = 2; $i <= 10000; $i++)
|
|
327
375
|
{
|
|
328
|
-
$q->
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
610
|
-
$db2 =
|
|
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
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
$
|
|
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 =
|
|
654
|
-
$db2 =
|
|
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
|
|
803
|
+
public function testExclusive()
|
|
739
804
|
{
|
|
740
|
-
|
|
741
|
-
$
|
|
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
|
-
$
|
|
745
|
-
$this->
|
|
746
|
-
|
|
747
|
-
$
|
|
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
|
-
|
|
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,
|
|
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
|
-
$
|
|
786
|
-
$
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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,
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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,
|
|
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 =
|
|
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
|
|
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')->
|
|
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')->
|
|
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')->
|
|
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')->
|
|
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
|
-
|
|
1924
|
+
ActiveTable
|
|
1819
1925
|
----------------------------------------------------- */
|
|
1820
1926
|
|
|
1821
|
-
|
|
1927
|
+
private function createQTuser($db)
|
|
1822
1928
|
{
|
|
1823
|
-
|
|
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
|
-
$
|
|
1826
|
-
|
|
1827
|
-
$
|
|
1828
|
-
$
|
|
1829
|
-
$this->assertEquals($
|
|
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
|
}
|