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
|
@@ -13,7 +13,7 @@ And O/R mapping to the user class.
|
|
|
13
13
|
This program use the filter operation on server side.
|
|
14
14
|
|
|
15
15
|
Please execute "create database" , "change schema" and "insert records" example
|
|
16
|
-
|
|
16
|
+
before execute this example.
|
|
17
17
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
@@ -31,7 +31,6 @@ public:
|
|
|
31
31
|
std::string name;
|
|
32
32
|
int group;
|
|
33
33
|
std::string tel;
|
|
34
|
-
|
|
35
34
|
};
|
|
36
35
|
|
|
37
36
|
typedef boost::shared_ptr<user> user_ptr;
|
|
@@ -39,27 +38,27 @@ typedef boost::shared_ptr<user> user_ptr;
|
|
|
39
38
|
/** dump user to screen */
|
|
40
39
|
void dumpUser(const user_ptr& user)
|
|
41
40
|
{
|
|
42
|
-
std::cout << " id " << user->id
|
|
43
|
-
std::cout << " name " << user->name
|
|
41
|
+
std::cout << " id " << user->id << std::endl;
|
|
42
|
+
std::cout << " name " << user->name << std::endl;
|
|
44
43
|
std::cout << " group " << user->group << std::endl;
|
|
45
|
-
std::cout << " tel " << user->tel
|
|
46
|
-
|
|
44
|
+
std::cout << " tel " << user->tel << std::endl << std::endl;
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
/** OR mapping functional object*/
|
|
50
48
|
class userMappper
|
|
51
49
|
{
|
|
52
50
|
std::vector<user_ptr>& m_users;
|
|
51
|
+
|
|
53
52
|
public:
|
|
54
|
-
userMappper(std::vector<user_ptr>& users):m_users(users){}
|
|
53
|
+
userMappper(std::vector<user_ptr>& users) : m_users(users) {}
|
|
55
54
|
void operator()(const fields& fds)
|
|
56
55
|
{
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
56
|
+
user_ptr u(new user());
|
|
57
|
+
u->id = fds[fieldnum_id].i();
|
|
58
|
+
u->name = fds[fieldnum_name].a_str(); // get by ansi string
|
|
59
|
+
u->group = fds[fieldnum_group].i();
|
|
60
|
+
u->tel = fds[fieldnum_tel].a_str(); // get by ansi string
|
|
61
|
+
m_users.push_back(u);
|
|
63
62
|
}
|
|
64
63
|
};
|
|
65
64
|
|
|
@@ -67,41 +66,44 @@ void readUsers(table_ptr tb, std::vector<user_ptr>& users)
|
|
|
67
66
|
{
|
|
68
67
|
|
|
69
68
|
// Get filterIterator. This filter is execute on server side.
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
query q;
|
|
70
|
+
q.where(_T("group"), _T("="), _T("3")).reject(0);
|
|
71
|
+
|
|
72
|
+
findIterator itsf = find(tb, keynum_group, q, 3);
|
|
72
73
|
|
|
73
74
|
// O/R mapping functional object
|
|
74
75
|
userMappper ormap(users);
|
|
75
76
|
|
|
76
|
-
//loop each group=1 records
|
|
77
|
+
// loop each group=1 records
|
|
77
78
|
for_each(itsf, ormap);
|
|
78
|
-
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
#pragma argsused
|
|
82
82
|
int _tmain(int argc, _TCHAR* argv[])
|
|
83
83
|
{
|
|
84
|
-
database_ptr db =
|
|
84
|
+
database_ptr db = createDatabaseObject();
|
|
85
85
|
try
|
|
86
86
|
{
|
|
87
|
-
connectParams param(_T("tdap"), _T("localhost"), _T("test"),
|
|
87
|
+
connectParams param(_T("tdap"), _T("localhost"), _T("test"),
|
|
88
|
+
_T("test"));
|
|
88
89
|
openDatabase(db, param);
|
|
89
90
|
|
|
90
91
|
table_ptr tb = openTable(db, _T("user"));
|
|
91
92
|
std::vector<user_ptr> users;
|
|
92
93
|
readUsers(tb, users);
|
|
93
94
|
|
|
94
|
-
std::cout << "Read records success.\nRecord count = " << users.size()
|
|
95
|
+
std::cout << "Read records success.\nRecord count = " << users.size()
|
|
96
|
+
<< std::endl;
|
|
95
97
|
|
|
96
|
-
//dump users to screen.
|
|
98
|
+
// dump users to screen.
|
|
97
99
|
std::for_each(users.begin(), users.end(), dumpUser);
|
|
98
100
|
|
|
99
101
|
return 0;
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
catch(bzs::rtl::exception& e)
|
|
104
|
+
catch (bzs::rtl::exception& e)
|
|
103
105
|
{
|
|
104
|
-
std::tcout << *bzs::rtl::getMsg(e) << std::endl;
|
|
106
|
+
std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
|
|
105
107
|
}
|
|
106
108
|
return 1;
|
|
107
109
|
}
|
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
#include <bzs/db/protocol/tdap/client/table.h>
|
|
4
4
|
#include <bzs/db/protocol/tdap/client/dbDef.h>
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
using namespace bzs::db::protocol::tdap::client;
|
|
8
7
|
using namespace bzs::db::protocol::tdap;
|
|
9
8
|
|
|
10
|
-
|
|
11
9
|
/**
|
|
12
10
|
@brief read and update example
|
|
13
11
|
|
|
@@ -15,11 +13,10 @@ This program updates some records of a "user" table.
|
|
|
15
13
|
Change group of user in group 1 to 3
|
|
16
14
|
|
|
17
15
|
Please execute "create database" , "change schema" and "insert records" example
|
|
18
|
-
|
|
16
|
+
before execute this example.
|
|
19
17
|
|
|
20
18
|
*/
|
|
21
19
|
|
|
22
|
-
|
|
23
20
|
static const short fieldnum_id = 0;
|
|
24
21
|
static const short fieldnum_name = 1;
|
|
25
22
|
static const short fieldnum_group = 2;
|
|
@@ -28,39 +25,37 @@ static const short fieldnum_tel = 3;
|
|
|
28
25
|
static const char_td keynum_group = 1;
|
|
29
26
|
/** show database operation error
|
|
30
27
|
*/
|
|
31
|
-
void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
|
|
28
|
+
void showError(const _TCHAR* caption, const _TCHAR* tableName, short statusCode)
|
|
32
29
|
{
|
|
33
|
-
_TCHAR tmp[1024]={0x00};
|
|
30
|
+
_TCHAR tmp[1024] = { 0x00 };
|
|
34
31
|
nstable::tdapErr(0x00, statusCode, tableName, tmp);
|
|
35
|
-
_tprintf(_T("%s
|
|
32
|
+
_tprintf(_T("[ERROR] %s No.%ld %s\n"), caption, statusCode, tmp);
|
|
36
33
|
}
|
|
37
34
|
|
|
38
|
-
|
|
39
35
|
bool updateUsers(table* tb)
|
|
40
36
|
{
|
|
41
37
|
tb->clearBuffer();
|
|
42
|
-
tb->setKeyNum(keynum_group); //use group key
|
|
43
|
-
tb->setFV(fieldnum_group, 1)
|
|
38
|
+
tb->setKeyNum(keynum_group); // use group key
|
|
39
|
+
tb->setFV(fieldnum_group, 1); // set group = 1;
|
|
44
40
|
tb->seekGreater(true /*orEqual*/);
|
|
45
41
|
while (tb->stat() == 0)
|
|
46
42
|
{
|
|
47
|
-
//check group value.
|
|
43
|
+
// check group value.
|
|
48
44
|
if (tb->getFVint(fieldnum_group) != 1)
|
|
49
45
|
break;
|
|
50
46
|
|
|
51
|
-
//update group
|
|
52
|
-
tb->setFV(fieldnum_group, 3);
|
|
53
|
-
tb->update(nstable::changeCurrentNcc); //Important ncc=true !
|
|
54
|
-
if (tb->stat()!=0)
|
|
55
|
-
showError(_T("update user"), tb->tableDef()->tableName(),
|
|
47
|
+
// update group
|
|
48
|
+
tb->setFV(fieldnum_group, 3); // change group 1 to 3
|
|
49
|
+
tb->update(nstable::changeCurrentNcc); // Important ncc=true !
|
|
50
|
+
if (tb->stat() != 0)
|
|
51
|
+
showError(_T("update user"), tb->tableDef()->tableName(),
|
|
52
|
+
tb->stat());
|
|
56
53
|
else
|
|
57
54
|
tb->seekNext();
|
|
58
55
|
}
|
|
59
|
-
return ((tb->stat() == STATUS_EOF)||(tb->stat()== 0));
|
|
56
|
+
return ((tb->stat() == STATUS_EOF) || (tb->stat() == 0));
|
|
60
57
|
}
|
|
61
58
|
|
|
62
|
-
|
|
63
|
-
|
|
64
59
|
/** Open database
|
|
65
60
|
*/
|
|
66
61
|
bool openDatabase(database* db, const _TCHAR* uri)
|
|
@@ -88,9 +83,9 @@ int _tmain(int argc, _TCHAR* argv[])
|
|
|
88
83
|
showError(_T("open user table"), NULL, db->stat());
|
|
89
84
|
else
|
|
90
85
|
{
|
|
91
|
-
|
|
86
|
+
if (updateUsers(tbu))
|
|
92
87
|
_tprintf(_T("Update records success. \n"));
|
|
93
|
-
|
|
88
|
+
tbu->release();
|
|
94
89
|
}
|
|
95
90
|
db->close();
|
|
96
91
|
}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
using namespace bzs::db::protocol::tdap::client;
|
|
5
5
|
using namespace bzs::db::protocol::tdap;
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
/**
|
|
9
8
|
@brief read and update records example
|
|
10
9
|
|
|
@@ -12,18 +11,17 @@ This program updates some records of a "user" table.
|
|
|
12
11
|
Change group of user in group 1 to 3
|
|
13
12
|
|
|
14
13
|
Please execute "create database" , "change schema" and "insert records" example
|
|
15
|
-
|
|
14
|
+
before execute this example.
|
|
16
15
|
|
|
17
16
|
*/
|
|
18
17
|
|
|
19
|
-
|
|
20
18
|
static const short fieldnum_id = 0;
|
|
21
19
|
static const short fieldnum_group = 2;
|
|
22
20
|
static const char_td keynum_group = 1;
|
|
23
21
|
|
|
24
22
|
int isGroupOne(const fields& fds)
|
|
25
23
|
{
|
|
26
|
-
return
|
|
24
|
+
return (fds[fieldnum_group].i() == 1) ? filter_validate_value
|
|
27
25
|
: filter_invalidate_value;
|
|
28
26
|
}
|
|
29
27
|
|
|
@@ -41,20 +39,18 @@ void updateUsers(table_ptr tb)
|
|
|
41
39
|
// Wrap filtered iterator
|
|
42
40
|
filterdIndexIterator itf(it, isGroupOne);
|
|
43
41
|
|
|
44
|
-
//loop each group=1 records and update to 3
|
|
42
|
+
// loop each group=1 records and update to 3
|
|
45
43
|
for_each(itf, changeGroupTo3);
|
|
46
|
-
|
|
47
|
-
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
|
|
51
46
|
#pragma argsused
|
|
52
47
|
int _tmain(int argc, _TCHAR* argv[])
|
|
53
48
|
{
|
|
54
|
-
database_ptr db =
|
|
49
|
+
database_ptr db = createDatabaseObject();
|
|
55
50
|
try
|
|
56
51
|
{
|
|
57
|
-
connectParams param(_T("tdap"), _T("localhost"), _T("test"),
|
|
52
|
+
connectParams param(_T("tdap"), _T("localhost"), _T("test"),
|
|
53
|
+
_T("test"));
|
|
58
54
|
openDatabase(db, param);
|
|
59
55
|
|
|
60
56
|
table_ptr tb = openTable(db, _T("user"));
|
|
@@ -63,9 +59,9 @@ int _tmain(int argc, _TCHAR* argv[])
|
|
|
63
59
|
return 0;
|
|
64
60
|
}
|
|
65
61
|
|
|
66
|
-
catch(bzs::rtl::exception& e)
|
|
62
|
+
catch (bzs::rtl::exception& e)
|
|
67
63
|
{
|
|
68
|
-
std::tcout << *bzs::rtl::getMsg(e) << std::endl;
|
|
64
|
+
std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
|
|
69
65
|
}
|
|
70
66
|
return 1;
|
|
71
67
|
}
|
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
#include <bzs/db/protocol/tdap/client/table.h>
|
|
4
4
|
#include <bzs/db/protocol/tdap/client/dbDef.h>
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
using namespace bzs::db::protocol::tdap::client;
|
|
8
7
|
using namespace bzs::db::protocol::tdap;
|
|
9
8
|
|
|
10
|
-
|
|
11
9
|
/**
|
|
12
10
|
@brief update records in transaction example
|
|
13
11
|
|
|
@@ -15,11 +13,10 @@ This program updates some records of a "user" table.
|
|
|
15
13
|
Change group of user in group 1 to 3
|
|
16
14
|
|
|
17
15
|
Please execute "create database" , "change schema" and "insert records" example
|
|
18
|
-
|
|
16
|
+
before execute this example.
|
|
19
17
|
|
|
20
18
|
*/
|
|
21
19
|
|
|
22
|
-
|
|
23
20
|
static const short fieldnum_id = 0;
|
|
24
21
|
static const short fieldnum_name = 1;
|
|
25
22
|
static const short fieldnum_group = 2;
|
|
@@ -28,39 +25,38 @@ static const short fieldnum_tel = 3;
|
|
|
28
25
|
static const char_td keynum_group = 1;
|
|
29
26
|
/** show database operation error
|
|
30
27
|
*/
|
|
31
|
-
void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
|
|
28
|
+
void showError(const _TCHAR* caption, const _TCHAR* tableName, short statusCode)
|
|
32
29
|
{
|
|
33
|
-
_TCHAR tmp[1024]={0x00};
|
|
30
|
+
_TCHAR tmp[1024] = { 0x00 };
|
|
34
31
|
nstable::tdapErr(0x00, statusCode, tableName, tmp);
|
|
35
|
-
_tprintf(_T("%s
|
|
32
|
+
_tprintf(_T("[ERROR] %s No.%ld %s\n"), caption, statusCode, tmp);
|
|
36
33
|
}
|
|
37
34
|
|
|
38
|
-
|
|
39
35
|
bool updateUsers(table* tb)
|
|
40
36
|
{
|
|
41
37
|
tb->clearBuffer();
|
|
42
|
-
tb->setKeyNum(keynum_group); //use group key
|
|
43
|
-
tb->setFV(fieldnum_group, 1)
|
|
38
|
+
tb->setKeyNum(keynum_group); // use group key
|
|
39
|
+
tb->setFV(fieldnum_group, 1); // set group = 1;
|
|
44
40
|
tb->seekGreater(true /*orEqual*/);
|
|
45
41
|
while (tb->stat() == 0)
|
|
46
42
|
{
|
|
47
|
-
//check group value.
|
|
43
|
+
// check group value.
|
|
48
44
|
if (tb->getFVint(fieldnum_group) != 1)
|
|
49
45
|
break;
|
|
50
46
|
|
|
51
|
-
//update group
|
|
52
|
-
tb->setFV(fieldnum_group, 3);
|
|
53
|
-
tb->update(
|
|
54
|
-
|
|
55
|
-
|
|
47
|
+
// update group
|
|
48
|
+
tb->setFV(fieldnum_group, 3); // change group 1 to 3
|
|
49
|
+
tb->update(
|
|
50
|
+
nstable::changeCurrentNcc /*ncc=true*/); // Important ncc=true !
|
|
51
|
+
if (tb->stat() != 0)
|
|
52
|
+
showError(_T("update user"), tb->tableDef()->tableName(),
|
|
53
|
+
tb->stat());
|
|
56
54
|
else
|
|
57
55
|
tb->seekNext();
|
|
58
56
|
}
|
|
59
|
-
return ((tb->stat() == STATUS_EOF)||(tb->stat()== 0));
|
|
57
|
+
return ((tb->stat() == STATUS_EOF) || (tb->stat() == 0));
|
|
60
58
|
}
|
|
61
59
|
|
|
62
|
-
|
|
63
|
-
|
|
64
60
|
/** Open database
|
|
65
61
|
*/
|
|
66
62
|
bool openDatabase(database* db, const _TCHAR* uri)
|
|
@@ -88,14 +84,15 @@ int _tmain(int argc, _TCHAR* argv[])
|
|
|
88
84
|
showError(_T("open user table"), NULL, db->stat());
|
|
89
85
|
else
|
|
90
86
|
{
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
db->beginTrn();
|
|
88
|
+
if (updateUsers(tbu))
|
|
89
|
+
{
|
|
94
90
|
db->endTrn();
|
|
95
91
|
_tprintf(_T("Update records success. \n"));
|
|
96
|
-
|
|
92
|
+
}
|
|
93
|
+
else
|
|
97
94
|
db->abortTrn();
|
|
98
|
-
|
|
95
|
+
tbu->release();
|
|
99
96
|
}
|
|
100
97
|
db->close();
|
|
101
98
|
}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
using namespace bzs::db::protocol::tdap::client;
|
|
5
5
|
using namespace bzs::db::protocol::tdap;
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
/**
|
|
9
8
|
@brief update records in transaction example
|
|
10
9
|
|
|
@@ -12,18 +11,17 @@ This program updates some records of a "user" table.
|
|
|
12
11
|
Change group of user in group 1 to 3
|
|
13
12
|
|
|
14
13
|
Please execute "create database" , "change schema" and "insert records" example
|
|
15
|
-
|
|
14
|
+
before execute this example.
|
|
16
15
|
|
|
17
16
|
*/
|
|
18
17
|
|
|
19
|
-
|
|
20
18
|
static const short fieldnum_id = 0;
|
|
21
19
|
static const short fieldnum_group = 2;
|
|
22
20
|
static const char_td keynum_group = 1;
|
|
23
21
|
|
|
24
22
|
int isGroupOne(const fields& fds)
|
|
25
23
|
{
|
|
26
|
-
return
|
|
24
|
+
return (fds[fieldnum_group].i() == 1) ? filter_validate_value
|
|
27
25
|
: filter_invalidate_value;
|
|
28
26
|
}
|
|
29
27
|
|
|
@@ -41,40 +39,39 @@ void updateUsers(table_ptr tb)
|
|
|
41
39
|
// Wrap filtered iterator
|
|
42
40
|
filterdIndexIterator itf(it, isGroupOne);
|
|
43
41
|
|
|
44
|
-
//loop each group=1 records and update
|
|
42
|
+
// loop each group=1 records and update
|
|
45
43
|
for_each(itf, changeGroup1To3);
|
|
46
|
-
|
|
47
|
-
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
|
|
51
46
|
#pragma argsused
|
|
52
47
|
int _tmain(int argc, _TCHAR* argv[])
|
|
53
48
|
{
|
|
54
|
-
database_ptr db =
|
|
49
|
+
database_ptr db = createDatabaseObject();
|
|
55
50
|
try
|
|
56
51
|
{
|
|
57
|
-
connectParams param(_T("tdap"), _T("localhost"), _T("test"),
|
|
52
|
+
connectParams param(_T("tdap"), _T("localhost"), _T("test"),
|
|
53
|
+
_T("test"));
|
|
58
54
|
openDatabase(db, param);
|
|
59
55
|
|
|
60
56
|
table_ptr tb = openTable(db, _T("user"));
|
|
61
|
-
|
|
57
|
+
dbTransaction trn(db);
|
|
62
58
|
|
|
63
|
-
//start transaction
|
|
59
|
+
// start transaction
|
|
64
60
|
trn.begin();
|
|
65
61
|
|
|
66
62
|
updateUsers(tb);
|
|
67
63
|
|
|
68
|
-
//Commit transaction. If an error throwed then abort transaction
|
|
64
|
+
// Commit transaction. If an error throwed then abort transaction
|
|
65
|
+
// automaticaly.
|
|
69
66
|
trn.end();
|
|
70
67
|
|
|
71
68
|
std::cout << "Update records success." << std::endl;
|
|
72
69
|
return 0;
|
|
73
70
|
}
|
|
74
71
|
|
|
75
|
-
catch(bzs::rtl::exception& e)
|
|
72
|
+
catch (bzs::rtl::exception& e)
|
|
76
73
|
{
|
|
77
|
-
std::tcout << *bzs::rtl::getMsg(e) << std::endl;
|
|
74
|
+
std::tcout << _T("[ERROR] ") << *bzs::rtl::getMsg(e) << std::endl;
|
|
78
75
|
}
|
|
79
76
|
return 1;
|
|
80
77
|
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/*=================================================================
|
|
2
|
+
Copyright (C) 2014 BizStation Corp All rights reserved.
|
|
3
|
+
|
|
4
|
+
This program is free software; you can redistribute it and/or
|
|
5
|
+
modify it under the terms of the GNU General Public License
|
|
6
|
+
as published by the Free Software Foundation; either version 2
|
|
7
|
+
of the License, or (at your option) any later version.
|
|
8
|
+
|
|
9
|
+
This program is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with this program; if not, write to the Free Software
|
|
16
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
17
|
+
02111-1307, USA.
|
|
18
|
+
=================================================================*/
|
|
19
|
+
#include <iostream>
|
|
20
|
+
#include <locale.h>
|
|
21
|
+
#include <boost/iterator/iterator_facade.hpp>
|
|
22
|
+
#include "memRecordset.h"
|
|
23
|
+
#include "benchmark.h"
|
|
24
|
+
|
|
25
|
+
using namespace bzs::db::protocol::tdap::client;
|
|
26
|
+
using namespace bzs::db::protocol::tdap;
|
|
27
|
+
|
|
28
|
+
static const char_td keynum_group = 1;
|
|
29
|
+
static const char_td primary_key = 0;
|
|
30
|
+
|
|
31
|
+
bool readUsers(databaseManager* mgr, recordset* rows)
|
|
32
|
+
{
|
|
33
|
+
const int key_date = 1;
|
|
34
|
+
const unsigned short disableReject = 0xFFFF;
|
|
35
|
+
const _TCHAR* startDate = L"2012/09/01";
|
|
36
|
+
const _TCHAR* endDate = L"2014/02/28";
|
|
37
|
+
const _TCHAR* prod = L"���i����";
|
|
38
|
+
const _TCHAR* amount = L"���z";
|
|
39
|
+
const _TCHAR* wkid = L"extID";
|
|
40
|
+
const _TCHAR* date = L"���t";
|
|
41
|
+
const _TCHAR* factryEmp = L"factryEmpID";
|
|
42
|
+
const _TCHAR* factryEmpid = _T("�Ј�ID");
|
|
43
|
+
const _TCHAR* empId = L"id";
|
|
44
|
+
const _TCHAR* empName = L"���O";
|
|
45
|
+
activeTable<map_orm> atwm(*mgr, _T("��Ɩ���"));
|
|
46
|
+
activeTable<map_orm> atwh(*mgr, _T("��ƃw�b�_�["));
|
|
47
|
+
activeTable<map_orm> atemp(*mgr, _T("�Ј�"));
|
|
48
|
+
|
|
49
|
+
recordset& rowset = *rows;
|
|
50
|
+
tdc:
|
|
51
|
+
query q;
|
|
52
|
+
DWORD t = timeGetTime();
|
|
53
|
+
for (int j = 0; j < 1; ++j)
|
|
54
|
+
{
|
|
55
|
+
rowset.clear();
|
|
56
|
+
// rowset.reserve(4000);
|
|
57
|
+
|
|
58
|
+
// startDate����endDate�܂ł�wkid���L���ȍ�Ɩ��דǂݎ��
|
|
59
|
+
|
|
60
|
+
q.reset()
|
|
61
|
+
.select(prod, amount, wkid)
|
|
62
|
+
.where(date, L"<=", endDate)
|
|
63
|
+
.and_(wkid, L">", 0)
|
|
64
|
+
.reject(disableReject);
|
|
65
|
+
atwm.index(key_date).keyValue(startDate).read(rowset, q);
|
|
66
|
+
|
|
67
|
+
// t = timeGetTime() - t;
|
|
68
|
+
// std::tcout << _T("work record reading time = ") << t << _T("\n");
|
|
69
|
+
|
|
70
|
+
// wkid�����ƃw�b�_�[����ݎЈ��ԍ���ǂݎ��
|
|
71
|
+
atwh.index(0).alias(factryEmp, factryEmpid).join(
|
|
72
|
+
rowset, q.reset().select(factryEmpid), wkid);
|
|
73
|
+
|
|
74
|
+
//���ʃZ�b�g��prod �� factryEmp�ŃO���[�s���O
|
|
75
|
+
tdc::groupQuery gq;
|
|
76
|
+
gq.keyField(prod, factryEmpid).resultField(amount);
|
|
77
|
+
rowset.groupBy(gq, sum<>());
|
|
78
|
+
|
|
79
|
+
// rowset.groupBy(gq, avg<>());
|
|
80
|
+
// factryEmp���Ј��e�[�u�������empName��Join����
|
|
81
|
+
atemp.alias(empName, _T("�Ј���"));
|
|
82
|
+
atemp.index(0).join(rowset, q.reset().select(_T("�Ј���") /*empName*/),
|
|
83
|
+
factryEmpid);
|
|
84
|
+
rowset.orderBy(amount, factryEmpid);
|
|
85
|
+
}
|
|
86
|
+
std::tcout << _T("data count = ") << rowset.size() << _T("\n");
|
|
87
|
+
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
void wirteRecord(databaseManager* mgr)
|
|
91
|
+
{
|
|
92
|
+
activeTable<map_orm> atemp(*mgr, _T("�Ј�"));
|
|
93
|
+
|
|
94
|
+
tdc::writableRecord& rec = atemp.index(0).getWritableRecord();
|
|
95
|
+
|
|
96
|
+
rec[_T("id")] = 1200;
|
|
97
|
+
rec[_T("���O")] = _T("���");
|
|
98
|
+
if (!rec.read())
|
|
99
|
+
rec.insert();
|
|
100
|
+
|
|
101
|
+
rec.clear();
|
|
102
|
+
rec[_T("id")] = 1201;
|
|
103
|
+
rec[_T("���O")] = _T("����");
|
|
104
|
+
if (!rec.read())
|
|
105
|
+
rec.insert();
|
|
106
|
+
|
|
107
|
+
// update changed filed only
|
|
108
|
+
rec.clear();
|
|
109
|
+
rec[_T("id")] = 1201;
|
|
110
|
+
rec[_T("parent")] = 1240;
|
|
111
|
+
rec.update();
|
|
112
|
+
|
|
113
|
+
rec.del();
|
|
114
|
+
rec[_T("id")] = 1200;
|
|
115
|
+
rec.del();
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
void delUser(databaseManager* mgr)
|
|
119
|
+
{
|
|
120
|
+
activeTable<map_orm> atemp(*mgr, _T("�Ј�"));
|
|
121
|
+
|
|
122
|
+
// update�ł͕ύX�����t�B�[���h�����ɂ�����
|
|
123
|
+
//�ύX�t�B�[���h���킩��fields���K�v
|
|
124
|
+
//�ύX�t�B�[���h������
|
|
125
|
+
tdc::memoryRecord& rec = atemp.getWritableRecord();
|
|
126
|
+
rec[_T("id")] = 1200;
|
|
127
|
+
atemp.del(rec);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
void showConsole(recordset& rowset)
|
|
131
|
+
{
|
|
132
|
+
|
|
133
|
+
const tdc::fielddefs& fields = *rowset.fieldDefs();
|
|
134
|
+
for (int j = 0; j < (int)fields.size(); ++j)
|
|
135
|
+
std::tcout << fields[j].name() << _T("\t");
|
|
136
|
+
std::tcout << _T("\n");
|
|
137
|
+
|
|
138
|
+
for (int i = 0; i < (int)rowset.size(); ++i)
|
|
139
|
+
{
|
|
140
|
+
row& m = *rowset[i];
|
|
141
|
+
for (int j = 0; j < (int)m.size(); ++j)
|
|
142
|
+
{
|
|
143
|
+
std::tcout << m[(size_t)j].c_str() << _T("\t");
|
|
144
|
+
if (j == (int)m.size() - 1)
|
|
145
|
+
std::tcout << _T("\n");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
#pragma argsused
|
|
151
|
+
int _tmain(int argc, _TCHAR* argv[])
|
|
152
|
+
{
|
|
153
|
+
std::locale::global(std::locale("japanese"));
|
|
154
|
+
database_ptr db = createDatabaseObject();
|
|
155
|
+
try
|
|
156
|
+
{
|
|
157
|
+
connectParams param(_T("tdap"), _T("localhost"), _T("mri"),
|
|
158
|
+
_T("dj32.bdf"));
|
|
159
|
+
openDatabase(db, param);
|
|
160
|
+
databaseManager mgr(db);
|
|
161
|
+
|
|
162
|
+
recordset rowset;
|
|
163
|
+
|
|
164
|
+
bzs::rtl::benchmark bm;
|
|
165
|
+
bm.report(boost::bind(readUsers, &mgr, &rowset), "exec time ");
|
|
166
|
+
showConsole(rowset);
|
|
167
|
+
wirteRecord(&mgr);
|
|
168
|
+
return 0;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
catch (bzs::rtl::exception& e)
|
|
172
|
+
{
|
|
173
|
+
std::tcout << *bzs::rtl::getMsg(e) << std::endl;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return 1;
|
|
177
|
+
}
|