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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#ifndef
|
|
2
|
-
#define
|
|
1
|
+
#ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
|
|
2
|
+
#define BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
|
|
3
3
|
/* =================================================================
|
|
4
4
|
Copyright (C) 2000-2013 BizStation Corp All rights reserved.
|
|
5
5
|
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
19
|
02111-1307, USA.
|
|
20
20
|
================================================================= */
|
|
21
|
-
|
|
22
21
|
#include <bzs/env/tstring.h>
|
|
23
22
|
#include <bzs/db/protocol/tdap/tdapcapi.h>
|
|
24
23
|
#include <bzs/db/protocol/tdap/tdapSchema.h>
|
|
25
24
|
#include <bzs/rtl/exception.h>
|
|
25
|
+
#include "export.h"
|
|
26
26
|
|
|
27
27
|
namespace bzs
|
|
28
28
|
{
|
|
@@ -39,39 +39,45 @@ class nsdatabase;
|
|
|
39
39
|
class nstable;
|
|
40
40
|
class bulkInsert;
|
|
41
41
|
|
|
42
|
-
#define BULKBUFSIZE USHRT_MAX-1000
|
|
43
|
-
|
|
42
|
+
#define BULKBUFSIZE USHRT_MAX - 1000
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
class AGRPACK nstable
|
|
44
|
+
class DLLLIB nstable
|
|
47
45
|
{
|
|
48
|
-
|
|
46
|
+
friend class nsdatabase; // for destroy()
|
|
49
47
|
friend class filter;
|
|
48
|
+
|
|
50
49
|
public:
|
|
51
|
-
enum eUpdateType
|
|
52
|
-
|
|
50
|
+
enum eUpdateType
|
|
51
|
+
{
|
|
52
|
+
changeCurrentCc,
|
|
53
|
+
changeCurrentNcc,
|
|
54
|
+
changeInKey
|
|
55
|
+
};
|
|
56
|
+
enum eFindType
|
|
57
|
+
{
|
|
58
|
+
findForword,
|
|
59
|
+
findBackForword
|
|
60
|
+
};
|
|
53
61
|
static const bool inkey = true;
|
|
54
62
|
|
|
55
63
|
private:
|
|
56
64
|
struct nstimpl* m_impl;
|
|
57
65
|
|
|
58
|
-
|
|
59
66
|
nstable(const nstable&);
|
|
60
|
-
const nstable& operator
|
|
67
|
+
const nstable& operator=(const nstable&);
|
|
61
68
|
void doUpdate(eUpdateType type);
|
|
62
69
|
ushort_td doInsert(bool ncc);
|
|
63
|
-
|
|
70
|
+
static _TCHAR* getErrorMessage(int errorCode, _TCHAR* buf, size_t size);
|
|
64
71
|
|
|
65
72
|
protected:
|
|
66
|
-
|
|
67
|
-
ushort_td m_op;
|
|
68
73
|
void* m_pdata;
|
|
69
74
|
uint_td m_buflen;
|
|
70
75
|
uint_td m_datalen;
|
|
71
76
|
void* m_keybuf;
|
|
77
|
+
ushort_td m_op;
|
|
72
78
|
keylen_td m_keybuflen;
|
|
73
79
|
keylen_td m_keylen;
|
|
74
|
-
short_td m_stat;
|
|
80
|
+
mutable short_td m_stat;
|
|
75
81
|
char_td m_keynum;
|
|
76
82
|
|
|
77
83
|
union
|
|
@@ -82,84 +88,110 @@ protected:
|
|
|
82
88
|
uchar_td m_write : 1;
|
|
83
89
|
uchar_td m_insart : 1;
|
|
84
90
|
uchar_td m_delete : 1;
|
|
91
|
+
uchar_td m_reserverd : 4;
|
|
85
92
|
};
|
|
86
93
|
uchar_td m_curd;
|
|
87
94
|
};
|
|
88
95
|
|
|
89
96
|
virtual ~nstable();
|
|
90
|
-
const _TCHAR* uri() const
|
|
91
|
-
const uchar_td* posblk() const
|
|
97
|
+
const _TCHAR* uri() const;
|
|
98
|
+
const uchar_td* posblk() const;
|
|
92
99
|
void setIsOpen(bool v);
|
|
93
|
-
|
|
94
|
-
bulkInsert* bulkIns() const
|
|
95
|
-
virtual bool isUniqeKey(char_td keynum)
|
|
96
|
-
|
|
97
|
-
|
|
100
|
+
|
|
101
|
+
bulkInsert* bulkIns() const;
|
|
102
|
+
virtual bool isUniqeKey(char_td keynum)
|
|
103
|
+
{
|
|
104
|
+
return false;
|
|
105
|
+
} // for chacek updates deletes at key
|
|
106
|
+
virtual void writeRecordData() = 0;
|
|
107
|
+
virtual int onInsertBefore()
|
|
108
|
+
{
|
|
109
|
+
writeRecordData();
|
|
110
|
+
return 0;
|
|
111
|
+
};
|
|
98
112
|
virtual void onInsertAfter(int beforeResult);
|
|
99
|
-
virtual bool onUpdateCheck(eUpdateType type) {return true;};
|
|
100
|
-
virtual int onUpdateBefore()
|
|
101
|
-
|
|
102
|
-
|
|
113
|
+
virtual bool onUpdateCheck(eUpdateType type) { return true; };
|
|
114
|
+
virtual int onUpdateBefore()
|
|
115
|
+
{
|
|
116
|
+
writeRecordData();
|
|
117
|
+
return 0;
|
|
118
|
+
};
|
|
119
|
+
virtual void onUpdateAfter(int beforeResult){};
|
|
120
|
+
virtual bool onDeleteCheck(bool in_key) { return true; };
|
|
103
121
|
virtual void doDel(bool inkey);
|
|
104
|
-
virtual keylen_td writeKeyData(){return 0;};
|
|
105
|
-
virtual void onReadAfter()=0;
|
|
106
|
-
virtual uint_td doGetWriteImageLen() {return m_buflen;};
|
|
107
|
-
virtual void doOpen(const _TCHAR* name, char_td mode,
|
|
122
|
+
virtual keylen_td writeKeyData() { return 0; };
|
|
123
|
+
virtual void onReadAfter() = 0;
|
|
124
|
+
virtual uint_td doGetWriteImageLen() { return m_buflen; };
|
|
125
|
+
virtual void doOpen(const _TCHAR* name, char_td mode,
|
|
126
|
+
const _TCHAR* ownername);
|
|
108
127
|
virtual void doClose();
|
|
109
128
|
virtual void doCreateIndex(bool specifyKeyNum);
|
|
110
|
-
virtual uint_td doRecordCount(bool estimate, bool fromCurrent
|
|
129
|
+
virtual uint_td doRecordCount(bool estimate, bool fromCurrent);
|
|
111
130
|
virtual short_td doBtrvErr(HWND hWnd, _TCHAR* retbuf);
|
|
112
131
|
virtual ushort_td doCommitBulkInsert(bool autoCommit);
|
|
113
132
|
virtual void doAbortBulkInsert();
|
|
114
|
-
inline void open(const _TCHAR* uri, char_td mode = 0,
|
|
115
|
-
|
|
133
|
+
inline void open(const _TCHAR* uri, char_td mode = 0,
|
|
134
|
+
const _TCHAR* ownerName = NULL)
|
|
135
|
+
{
|
|
136
|
+
doOpen(uri, mode, ownerName);
|
|
137
|
+
}
|
|
116
138
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
139
|
+
/*
|
|
140
|
+
This method is ignore refarence count of nstable and force delete.
|
|
141
|
+
Use in nsdatabase::reset()
|
|
142
|
+
*/
|
|
143
|
+
void destroy();
|
|
144
|
+
void setShared();
|
|
123
145
|
|
|
124
146
|
public:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
short tableid() const ;
|
|
147
|
+
explicit nstable(nsdatabase* pbe);
|
|
148
|
+
void addref(void);
|
|
149
|
+
void release();
|
|
150
|
+
int refCount() const;
|
|
151
|
+
nsdatabase* nsdb() const;
|
|
152
|
+
short tableid() const;
|
|
132
153
|
void setTableid(short v);
|
|
133
154
|
bool isOpen() const;
|
|
134
|
-
|
|
135
|
-
inline
|
|
136
|
-
inline
|
|
137
|
-
inline
|
|
138
|
-
inline
|
|
139
|
-
inline uint_td
|
|
140
|
-
inline
|
|
141
|
-
inline
|
|
142
|
-
inline
|
|
143
|
-
inline
|
|
144
|
-
inline
|
|
145
|
-
inline bool
|
|
146
|
-
inline bool
|
|
147
|
-
inline bool
|
|
148
|
-
inline
|
|
149
|
-
inline
|
|
150
|
-
inline void
|
|
151
|
-
inline void
|
|
152
|
-
inline
|
|
153
|
-
inline
|
|
155
|
+
bool isUseTransactd() const;
|
|
156
|
+
inline void setAccessRights(unsigned char curd) { m_curd = curd; };
|
|
157
|
+
inline const void* data() const { return m_pdata; }
|
|
158
|
+
inline void setData(void* v) { m_pdata = v; }
|
|
159
|
+
inline uint_td buflen() const { return m_buflen; }
|
|
160
|
+
inline void setBuflen(uint_td v) { m_buflen = v; }
|
|
161
|
+
inline uint_td datalen() const { return m_datalen; }
|
|
162
|
+
inline short_td stat() const { return m_stat; }
|
|
163
|
+
inline void setStat(short_td v) { m_stat = v; }
|
|
164
|
+
inline char_td keyNum() const { return m_keynum; }
|
|
165
|
+
inline void setKeyNum(char_td v) { m_keynum = v; }
|
|
166
|
+
inline bool canRead() const { return (bool)m_read; }
|
|
167
|
+
inline bool canWrite() const { return (bool)m_write; }
|
|
168
|
+
inline bool canInsert() const { return (bool)m_insart; }
|
|
169
|
+
inline bool canDelete() const { return (bool)m_delete; }
|
|
170
|
+
inline uint_td getWriteImageLen() { return doGetWriteImageLen(); };
|
|
171
|
+
inline void close() { doClose(); }
|
|
172
|
+
inline void update(eUpdateType type = changeCurrentCc) { doUpdate(type); }
|
|
173
|
+
inline void del(bool in_key = false) { doDel(in_key); }
|
|
174
|
+
inline ushort_td insert(bool ncc = false) { return doInsert(ncc); };
|
|
175
|
+
inline void createIndex(bool specifyKeyNum = false)
|
|
176
|
+
{
|
|
177
|
+
doCreateIndex(specifyKeyNum);
|
|
178
|
+
}
|
|
154
179
|
void dropIndex(bool norenumber = false);
|
|
155
|
-
inline uint_td recordCount(bool estimate = true, bool fromCurrent = false
|
|
156
|
-
{
|
|
157
|
-
|
|
158
|
-
|
|
180
|
+
inline uint_td recordCount(bool estimate = true, bool fromCurrent = false)
|
|
181
|
+
{
|
|
182
|
+
return doRecordCount(estimate, fromCurrent);
|
|
183
|
+
}
|
|
184
|
+
inline short_td tdapErr(HWND hWnd, _TCHAR* retbuf = NULL)
|
|
185
|
+
{
|
|
186
|
+
return doBtrvErr(hWnd, retbuf);
|
|
187
|
+
}
|
|
188
|
+
|
|
159
189
|
void beginBulkInsert(int maxBuflen);
|
|
160
|
-
void abortBulkInsert(){doAbortBulkInsert();}
|
|
161
|
-
inline ushort_td commitBulkInsert(bool autoCommit = false)
|
|
162
|
-
|
|
190
|
+
void abortBulkInsert() { doAbortBulkInsert(); }
|
|
191
|
+
inline ushort_td commitBulkInsert(bool autoCommit = false)
|
|
192
|
+
{
|
|
193
|
+
return doCommitBulkInsert(autoCommit);
|
|
194
|
+
}
|
|
163
195
|
void tdap(ushort_td op);
|
|
164
196
|
void seekFirst(ushort_td lockBias = 0);
|
|
165
197
|
void seekLast(ushort_td lockBias = 0);
|
|
@@ -179,27 +211,29 @@ public:
|
|
|
179
211
|
percentage_td getPercentage(bookmark_td bm);
|
|
180
212
|
void seekByPercentage();
|
|
181
213
|
void seekByPercentage(percentage_td pc);
|
|
182
|
-
void setOwnerName(const _TCHAR* name
|
|
214
|
+
void setOwnerName(const _TCHAR* name, char_td enctype = 0);
|
|
183
215
|
void clearOwnerName();
|
|
184
216
|
ushort_td recordLength();
|
|
185
217
|
void stats(void* databuffer, uint_td buflen, bool estimate = true);
|
|
186
218
|
void unlock(bookmark_td bm = 0);
|
|
219
|
+
char_td mode() const;
|
|
187
220
|
static _TCHAR* getFileName(const _TCHAR* uri, _TCHAR* filename);
|
|
188
|
-
static short_td tdapErr(HWND hWnd, short_td status,
|
|
189
|
-
|
|
190
|
-
|
|
221
|
+
static short_td tdapErr(HWND hWnd, short_td status,
|
|
222
|
+
const _TCHAR* tableName = NULL,
|
|
223
|
+
_TCHAR* retbuf = NULL);
|
|
224
|
+
static void throwError(const _TCHAR* caption, short statusCode);
|
|
191
225
|
static void throwError(const _TCHAR* caption, nstable* tb);
|
|
192
226
|
static _TCHAR* getDirURI(const _TCHAR* uri, _TCHAR* retbuf);
|
|
193
227
|
static bool existsFile(const _TCHAR* filename);
|
|
194
|
-
|
|
195
|
-
|
|
228
|
+
/** @cond INTERNAL */
|
|
229
|
+
static bool test(nstable* p);
|
|
230
|
+
/** @endcond*/
|
|
196
231
|
};
|
|
197
232
|
|
|
233
|
+
} // namespace client
|
|
234
|
+
} // namespace tdap
|
|
235
|
+
} // namespace protocol
|
|
236
|
+
} // namespace db
|
|
237
|
+
} // namespace bzs
|
|
198
238
|
|
|
199
|
-
|
|
200
|
-
}// namespace tdap
|
|
201
|
-
}// namespace protocol
|
|
202
|
-
}// namespace db
|
|
203
|
-
}// namespace bzs
|
|
204
|
-
|
|
205
|
-
#endif //BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
|
|
239
|
+
#endif // BZS_DB_PROTOCOL_TDAP_CLIENT_NSTABLE_H
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
#ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_POOLEDDATABASEMANAGER_H
|
|
3
|
+
#define BZS_DB_PROTOCOL_TDAP_CLIENT_POOLEDDATABASEMANAGER_H
|
|
4
|
+
|
|
5
|
+
/* =================================================================
|
|
6
|
+
Copyright (C) 20014 BizStation Corp All rights reserved.
|
|
7
|
+
|
|
8
|
+
This program is free software; you can redistribute it and/or
|
|
9
|
+
modify it under the terms of the GNU General Public License
|
|
10
|
+
as published by the Free Software Foundation; either version 2
|
|
11
|
+
of the License, or (at your option) any later version.
|
|
12
|
+
|
|
13
|
+
This program is distributed in the hope that it will be useful,
|
|
14
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
GNU General Public License for more details.
|
|
17
|
+
|
|
18
|
+
You should have received a copy of the GNU General Public License
|
|
19
|
+
along with this program; if not, write to the Free Software
|
|
20
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
21
|
+
02111-1307, USA.
|
|
22
|
+
================================================================= */
|
|
23
|
+
#include "trdboostapi.h"
|
|
24
|
+
#include "connectionPool.h"
|
|
25
|
+
namespace bzs
|
|
26
|
+
{
|
|
27
|
+
namespace db
|
|
28
|
+
{
|
|
29
|
+
namespace protocol
|
|
30
|
+
{
|
|
31
|
+
namespace tdap
|
|
32
|
+
{
|
|
33
|
+
namespace client
|
|
34
|
+
{
|
|
35
|
+
|
|
36
|
+
class xaTransaction
|
|
37
|
+
{
|
|
38
|
+
std::vector<dbmanager_ptr> m_dbs;
|
|
39
|
+
|
|
40
|
+
public:
|
|
41
|
+
void add(dbmanager_ptr& db) { m_dbs.push_back(db); }
|
|
42
|
+
|
|
43
|
+
void unUse()
|
|
44
|
+
{
|
|
45
|
+
for (int i = (int)m_dbs.size() - 1; i >= 0; --i)
|
|
46
|
+
{
|
|
47
|
+
int ref = m_dbs[i].use_count();
|
|
48
|
+
m_dbs.erase(m_dbs.begin() + i);
|
|
49
|
+
if (ref == 2)
|
|
50
|
+
releaseConnection(&cpool);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void beginTrn(short bias)
|
|
55
|
+
{
|
|
56
|
+
for (size_t i = 0; i < m_dbs.size(); ++i)
|
|
57
|
+
m_dbs[i]->beginTrn(bias);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
void endTrn()
|
|
61
|
+
{
|
|
62
|
+
for (size_t i = 0; i < m_dbs.size(); ++i)
|
|
63
|
+
m_dbs[i]->endTrn();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
void abortTrn()
|
|
67
|
+
{
|
|
68
|
+
for (size_t i = 0; i < m_dbs.size(); ++i)
|
|
69
|
+
m_dbs[i]->abortTrn();
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
--------------------------------------
|
|
75
|
+
pooledDbManager::setMaxConnections(n);
|
|
76
|
+
|
|
77
|
+
pooledDbManager db;
|
|
78
|
+
db.use(param)
|
|
79
|
+
activeTable a(db, "user");
|
|
80
|
+
....
|
|
81
|
+
db.unUse();
|
|
82
|
+
--------------------------------------
|
|
83
|
+
Thread safe
|
|
84
|
+
Method : non thread safe.
|
|
85
|
+
Object : thread safe.
|
|
86
|
+
|
|
87
|
+
*/
|
|
88
|
+
class pooledDbManager : public idatabaseManager
|
|
89
|
+
{
|
|
90
|
+
dbmanager_ptr m_db;
|
|
91
|
+
bool m_inUse;
|
|
92
|
+
xaTransaction m_xa;
|
|
93
|
+
|
|
94
|
+
public:
|
|
95
|
+
inline pooledDbManager() : m_inUse(false){};
|
|
96
|
+
|
|
97
|
+
inline pooledDbManager(const connectParams* param) : m_inUse(false)
|
|
98
|
+
{
|
|
99
|
+
use(param);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
inline ~pooledDbManager()
|
|
103
|
+
{
|
|
104
|
+
if (m_inUse)
|
|
105
|
+
unUse();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
inline void use(const connectParams* param = NULL)
|
|
109
|
+
{
|
|
110
|
+
m_db = cpool.get(param);
|
|
111
|
+
m_inUse = true;
|
|
112
|
+
m_xa.add(m_db);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
inline void unUse()
|
|
116
|
+
{
|
|
117
|
+
m_db.reset();
|
|
118
|
+
m_xa.unUse();
|
|
119
|
+
// releaseConnection(&cpool);
|
|
120
|
+
m_inUse = false;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
inline void reset(int v) { cpool.reset(v); }
|
|
124
|
+
|
|
125
|
+
inline table_ptr table(const _TCHAR* name) { return m_db->table(name); }
|
|
126
|
+
|
|
127
|
+
inline database* db() const { return m_db->db(); }
|
|
128
|
+
|
|
129
|
+
inline const _TCHAR* uri() const { return m_db->uri(); }
|
|
130
|
+
|
|
131
|
+
inline char_td mode() const { return m_db->mode(); }
|
|
132
|
+
|
|
133
|
+
inline bool isOpened() const { return m_db->isOpened(); }
|
|
134
|
+
|
|
135
|
+
inline void setOption(__int64 v) { m_db->setOption(v); };
|
|
136
|
+
|
|
137
|
+
inline __int64 option() { return m_db->option(); };
|
|
138
|
+
|
|
139
|
+
inline void beginTrn(short bias) { m_xa.beginTrn(bias); };
|
|
140
|
+
|
|
141
|
+
inline void endTrn() { m_xa.endTrn(); }
|
|
142
|
+
|
|
143
|
+
inline void abortTrn() { m_xa.abortTrn(); }
|
|
144
|
+
|
|
145
|
+
inline int enableTrn() { return m_db->enableTrn(); }
|
|
146
|
+
|
|
147
|
+
inline void beginSnapshot() { m_db->beginSnapshot(); }
|
|
148
|
+
|
|
149
|
+
inline void endSnapshot() { m_db->endSnapshot(); }
|
|
150
|
+
|
|
151
|
+
inline short_td stat() const { return m_db->stat(); }
|
|
152
|
+
|
|
153
|
+
inline uchar_td* clientID() const { return m_db->clientID(); }
|
|
154
|
+
|
|
155
|
+
inline static void setMaxConnections(int maxWorkerNum)
|
|
156
|
+
{
|
|
157
|
+
cpool.setMaxConnections(maxWorkerNum);
|
|
158
|
+
};
|
|
159
|
+
inline static int maxConnections() { return cpool.maxConnections(); };
|
|
160
|
+
inline static void reserve(size_t size, const connectParams& param)
|
|
161
|
+
{
|
|
162
|
+
cpool.reserve(size, param);
|
|
163
|
+
}
|
|
164
|
+
// inline static bool reset(int waitSec=5){return cpool.reset(waitSec);}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
} // namespace client
|
|
168
|
+
} // namespace tdap
|
|
169
|
+
} // namespace protocol
|
|
170
|
+
} // namespace db
|
|
171
|
+
} // namespace bzs
|
|
172
|
+
|
|
173
|
+
#endif // BZS_DB_PROTOCOL_TDAP_CLIENT_POOLEDDATABASEMANAGER_H
|
|
@@ -0,0 +1,209 @@
|
|
|
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
|
+
#pragma hdrstop
|
|
20
|
+
|
|
21
|
+
#include "recordset.h"
|
|
22
|
+
#include "recordsetImple.h"
|
|
23
|
+
|
|
24
|
+
#pragma package(smart_init)
|
|
25
|
+
|
|
26
|
+
namespace bzs
|
|
27
|
+
{
|
|
28
|
+
namespace db
|
|
29
|
+
{
|
|
30
|
+
namespace protocol
|
|
31
|
+
{
|
|
32
|
+
namespace tdap
|
|
33
|
+
{
|
|
34
|
+
namespace client
|
|
35
|
+
{
|
|
36
|
+
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// class recordset
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
recordset::recordset() : m_imple(new recordsetImple)
|
|
41
|
+
{
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* This is deep copy.
|
|
45
|
+
But text and blob field data memory are shared.
|
|
46
|
+
*/
|
|
47
|
+
recordset::recordset(const recordset& r) : m_imple(r.m_imple->clone())
|
|
48
|
+
{
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
recordset& recordset::operator=(const recordset& r)
|
|
52
|
+
{
|
|
53
|
+
if (this != &r)
|
|
54
|
+
{
|
|
55
|
+
delete m_imple;
|
|
56
|
+
m_imple = r.m_imple->clone();
|
|
57
|
+
}
|
|
58
|
+
return *this;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
recordset* recordset::clone() const
|
|
62
|
+
{
|
|
63
|
+
return new recordset(*this);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
recordset::~recordset()
|
|
67
|
+
{
|
|
68
|
+
delete m_imple;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
void recordset::release()
|
|
72
|
+
{
|
|
73
|
+
delete this;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
void recordset::clearRecords()
|
|
77
|
+
{
|
|
78
|
+
m_imple->clearRecords();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
void recordset::clear()
|
|
82
|
+
{
|
|
83
|
+
m_imple->clear();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const fielddefs* recordset::fieldDefs() const
|
|
87
|
+
{
|
|
88
|
+
return m_imple->fieldDefs();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
row& recordset::operator[](size_t index) const
|
|
92
|
+
{
|
|
93
|
+
m_imple->checkIndex(index);
|
|
94
|
+
return (*m_imple)[index];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
row& recordset::first() const
|
|
98
|
+
{
|
|
99
|
+
return m_imple->first();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
row& recordset::last() const
|
|
103
|
+
{
|
|
104
|
+
return m_imple->last();
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
size_t recordset::size() const
|
|
108
|
+
{
|
|
109
|
+
return m_imple->size();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
size_t recordset::count() const
|
|
113
|
+
{
|
|
114
|
+
return m_imple->count();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
recordset& recordset::top(recordset& c, int n) const
|
|
118
|
+
{
|
|
119
|
+
m_imple->top(*c.m_imple, n);
|
|
120
|
+
return c;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
recordset::iterator recordset::begin()
|
|
124
|
+
{
|
|
125
|
+
return m_imple->begin();
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
recordset::iterator recordset::end()
|
|
129
|
+
{
|
|
130
|
+
return m_imple->end();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
recordset::iterator recordset::erase(size_t index)
|
|
134
|
+
{
|
|
135
|
+
m_imple->checkIndex(index);
|
|
136
|
+
return m_imple->erase(m_imple->begin() + index);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
recordset::iterator recordset::erase(const iterator& it)
|
|
140
|
+
{
|
|
141
|
+
return m_imple->erase(it);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
void recordset::removeField(int index)
|
|
145
|
+
{
|
|
146
|
+
m_imple->removeField(index);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
recordset& recordset::matchBy(recordsetQuery& rq)
|
|
150
|
+
{
|
|
151
|
+
m_imple->matchBy(rq);
|
|
152
|
+
return *this;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
recordset& recordset::groupBy(groupQuery& gq)
|
|
156
|
+
{
|
|
157
|
+
m_imple->groupBy(gq);
|
|
158
|
+
return *this;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
recordset& recordset::orderBy(const _TCHAR* name1, const _TCHAR* name2,
|
|
162
|
+
const _TCHAR* name3, const _TCHAR* name4,
|
|
163
|
+
const _TCHAR* name5, const _TCHAR* name6,
|
|
164
|
+
const _TCHAR* name7, const _TCHAR* name8)
|
|
165
|
+
{
|
|
166
|
+
m_imple->orderBy(name1, name2, name3, name4, name5, name6, name7, name8);
|
|
167
|
+
return *this;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
recordset& recordset::orderBy(const sortFields& orders)
|
|
171
|
+
{
|
|
172
|
+
m_imple->orderBy(orders);
|
|
173
|
+
return *this;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
recordset& recordset::reverse()
|
|
177
|
+
{
|
|
178
|
+
m_imple->reverse();
|
|
179
|
+
return *this;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
void recordset::appendField(const _TCHAR* name, int type, short len)
|
|
183
|
+
{
|
|
184
|
+
m_imple->appendField(name, type, len);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
recordset& recordset::operator+=(const recordset& r)
|
|
188
|
+
{
|
|
189
|
+
m_imple->operator+=(*r.m_imple);
|
|
190
|
+
return *this;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
recordset* recordset::create()
|
|
194
|
+
{
|
|
195
|
+
return new recordset();
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
#ifdef _DEBUG
|
|
199
|
+
void recordset::dump()
|
|
200
|
+
{
|
|
201
|
+
m_imple->dump();
|
|
202
|
+
}
|
|
203
|
+
#endif
|
|
204
|
+
|
|
205
|
+
} // namespace client
|
|
206
|
+
} // namespace tdap
|
|
207
|
+
} // namespace protocol
|
|
208
|
+
} // namespace db
|
|
209
|
+
} // namespace bzs
|