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,13 +20,14 @@
|
|
|
20
20
|
================================================================= */
|
|
21
21
|
#include "nsTable.h"
|
|
22
22
|
#include <vector>
|
|
23
|
+
#include <stdio.h>
|
|
23
24
|
namespace bzs
|
|
24
25
|
{
|
|
25
26
|
|
|
26
27
|
namespace db
|
|
27
28
|
{
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
struct blobHeader;
|
|
30
|
+
struct blob;
|
|
30
31
|
namespace protocol
|
|
31
32
|
{
|
|
32
33
|
namespace tdap
|
|
@@ -34,116 +35,152 @@ namespace tdap
|
|
|
34
35
|
namespace client
|
|
35
36
|
{
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
/** @cond INTERNAL */
|
|
38
39
|
class database;
|
|
39
40
|
class queryBase;
|
|
41
|
+
class fields;
|
|
40
42
|
#define null_str _T("")
|
|
41
43
|
|
|
42
|
-
#pragma warning(disable:4251)
|
|
44
|
+
#pragma warning(disable : 4251)
|
|
45
|
+
|
|
46
|
+
static const int mra_nojoin = 0;
|
|
47
|
+
static const int mra_first = 0;
|
|
48
|
+
static const int mra_nextrows = 1;
|
|
49
|
+
static const int mra_innerjoin = 2;
|
|
50
|
+
static const int mra_outerjoin = 4;
|
|
51
|
+
static const int mra_current_block = -1;
|
|
52
|
+
|
|
53
|
+
class multiRecordAlocator
|
|
54
|
+
{
|
|
55
|
+
|
|
56
|
+
public:
|
|
57
|
+
virtual ~multiRecordAlocator() {}
|
|
58
|
+
virtual void init(size_t recordCount, size_t recordLen, int addType,
|
|
59
|
+
const class table* tb) = 0;
|
|
60
|
+
virtual unsigned char* ptr(size_t row, int stat) = 0;
|
|
61
|
+
virtual void setJoinType(int v) = 0;
|
|
62
|
+
virtual void setInvalidRecord(size_t row, bool v) = 0;
|
|
63
|
+
virtual void setJoinRowMap(
|
|
64
|
+
const std::vector<std::vector<int> >* v /*, size_t size*/) = 0;
|
|
65
|
+
virtual const std::vector<std::vector<int> >* joinRowMap() const = 0;
|
|
66
|
+
virtual void duplicateRow(int row, int count) = 0;
|
|
67
|
+
virtual void removeLastMemBlock(int row) = 0;
|
|
68
|
+
};
|
|
43
69
|
|
|
70
|
+
/** @endcond */
|
|
44
71
|
|
|
45
|
-
class
|
|
72
|
+
class DLLLIB table : public nstable
|
|
46
73
|
{
|
|
47
74
|
friend class recordCache;
|
|
48
75
|
friend class database;
|
|
49
76
|
friend class filter;
|
|
77
|
+
friend class fields;
|
|
50
78
|
|
|
51
79
|
struct tbimpl* m_impl;
|
|
80
|
+
class fielddefs* m_fddefs;
|
|
52
81
|
tabledef* m_tableDef;
|
|
53
82
|
|
|
54
|
-
uchar_td charset() const
|
|
83
|
+
uchar_td charset() const;
|
|
55
84
|
bool checkFindDirection(ushort_td op);
|
|
56
|
-
bool checkIndex(short index);
|
|
85
|
+
bool checkIndex(short index) const;
|
|
57
86
|
void getKeySpec(keySpec* ks, bool SpecifyKeyNum = false);
|
|
58
87
|
const bzs::db::blobHeader* getBlobHeader();
|
|
59
|
-
void setBlobFieldPointer(char*ptr, const ::bzs::db::blobHeader* p);
|
|
88
|
+
void setBlobFieldPointer(char* ptr, const ::bzs::db::blobHeader* p);
|
|
60
89
|
void addSendBlob(const bzs::db::blob* blob);
|
|
61
90
|
void addBlobEndRow();
|
|
62
91
|
void resetSendBlob();
|
|
63
92
|
void btrvGetExtend(ushort_td op);
|
|
64
93
|
void getRecords(ushort_td op);
|
|
65
|
-
uint_td doGetWriteImageLen();
|
|
94
|
+
uint_td doGetWriteImageLen(); // orverride
|
|
66
95
|
void doUpdate(bool ncc = false); // orverride
|
|
67
96
|
ushort_td doCommitBulkInsert(bool autoCommit = false); // orverride
|
|
68
97
|
void doAbortBulkInsert(); // orverride
|
|
69
98
|
void doCreateIndex(bool SpecifyKeyNum = false); // orverride
|
|
70
|
-
uint_td doRecordCount(bool estimate, bool fromCurrent
|
|
99
|
+
uint_td doRecordCount(bool estimate, bool fromCurrent); // orverride
|
|
71
100
|
short_td doBtrvErr(HWND hWnd, _TCHAR* retbuf = NULL); // orverride
|
|
72
|
-
|
|
73
|
-
double getFVnumeric(short index);
|
|
74
|
-
double getFVDecimal(short index);
|
|
75
|
-
void setFVDecimal(short index, double data);
|
|
76
|
-
void setFVNumeric(short index, double data);
|
|
77
|
-
void doFind( ushort_td op, bool notIncCurrent);
|
|
101
|
+
void doFind(ushort_td op, bool notIncCurrent);
|
|
78
102
|
bool setSeekValueField(int row);
|
|
103
|
+
void btrvSeekMulti();
|
|
104
|
+
bool doSeekMultiAfter(int row);
|
|
79
105
|
|
|
80
106
|
protected:
|
|
81
|
-
explicit table(nsdatabase
|
|
107
|
+
explicit table(nsdatabase* pbe); // Inheritance is impossible
|
|
82
108
|
virtual ~table();
|
|
83
|
-
void* dataBak() const
|
|
109
|
+
void* dataBak() const;
|
|
84
110
|
void setDataBak(void* v);
|
|
85
111
|
void setBookMarks(int StartId, void* Data, ushort_td Count);
|
|
86
|
-
uint_td unPack(char*ptr, size_t size);
|
|
87
|
-
uint_td pack(char*ptr, size_t size);
|
|
112
|
+
uint_td unPack(char* ptr, size_t size);
|
|
113
|
+
uint_td pack(char* ptr, size_t size);
|
|
88
114
|
keylen_td writeKeyData(); // orverride
|
|
89
|
-
|
|
90
|
-
|
|
115
|
+
keylen_td writeKeyDataTo(uchar_td* to, int keySize);
|
|
116
|
+
|
|
117
|
+
void writeRecordData(){};
|
|
91
118
|
|
|
92
|
-
void onReadAfter();
|
|
93
|
-
bool onUpdateCheck(eUpdateType type);
|
|
119
|
+
void onReadAfter(); // orverride
|
|
120
|
+
bool onUpdateCheck(eUpdateType type); // orverride
|
|
94
121
|
|
|
95
|
-
|
|
122
|
+
int onUpdateBefore() { return 0; }; // orverride
|
|
96
123
|
|
|
97
|
-
|
|
124
|
+
void onUpdateAfter(int beforeResult); // orverride
|
|
98
125
|
bool onDeleteCheck(bool inkey); // orverride
|
|
99
126
|
|
|
100
|
-
|
|
127
|
+
int onInsertBefore() { return 0; }; // orverride
|
|
101
128
|
|
|
102
|
-
|
|
103
|
-
bool isUniqeKey(char_td keynum)
|
|
104
|
-
|
|
129
|
+
void onInsertAfter(int beforeResult); // orverride
|
|
130
|
+
bool isUniqeKey(char_td keynum); // orverride
|
|
131
|
+
void init(tabledef* def, short filenum, bool regularDir);
|
|
105
132
|
void* attachBuffer(void* newPtr, bool unpack = false, size_t size = 0);
|
|
106
133
|
void dettachBuffer();
|
|
107
134
|
|
|
108
|
-
|
|
135
|
+
virtual void doInit(tabledef* def, short filenum, bool regularDir);
|
|
109
136
|
|
|
110
137
|
virtual void onRecordCounting(size_t count, bool& complate){};
|
|
111
138
|
|
|
112
|
-
virtual void setNoUpdateTimeStamp(bool v)
|
|
113
|
-
|
|
139
|
+
virtual void setNoUpdateTimeStamp(bool v){};
|
|
114
140
|
|
|
115
141
|
public:
|
|
116
142
|
using nstable::eFindType;
|
|
117
143
|
|
|
118
|
-
inline const tabledef* tableDef() const {return m_tableDef;};
|
|
144
|
+
inline const tabledef* tableDef() const { return m_tableDef; };
|
|
145
|
+
inline const tabledef** tableDefPtr() const
|
|
146
|
+
{
|
|
147
|
+
return const_cast<const tabledef**>(&m_tableDef);
|
|
148
|
+
};
|
|
119
149
|
|
|
120
|
-
inline bool valiableFormatType() const
|
|
150
|
+
inline bool valiableFormatType() const
|
|
151
|
+
{
|
|
152
|
+
return m_tableDef->optionFlags.bitA;
|
|
153
|
+
}
|
|
121
154
|
|
|
122
|
-
inline bool blobFieldUsed() const {return m_tableDef->optionFlags.bitB;}
|
|
155
|
+
inline bool blobFieldUsed() const { return m_tableDef->optionFlags.bitB; }
|
|
123
156
|
|
|
124
|
-
bool logicalToString() const
|
|
157
|
+
bool logicalToString() const;
|
|
125
158
|
void setLogicalToString(bool v);
|
|
126
|
-
bool trimPadChar() const
|
|
159
|
+
bool trimPadChar() const;
|
|
127
160
|
void setTrimPadChar(bool v);
|
|
128
|
-
bool usePadChar() const
|
|
161
|
+
bool usePadChar() const;
|
|
129
162
|
void setUsePadChar(bool v);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
bool myDateTimeValueByBtrv() const
|
|
133
|
-
int bookMarksCount() const
|
|
163
|
+
void* optionalData() const;
|
|
164
|
+
void setOptionalData(void* v);
|
|
165
|
+
bool myDateTimeValueByBtrv() const;
|
|
166
|
+
int bookMarksCount() const;
|
|
134
167
|
void moveBookmarksId(long Id);
|
|
135
168
|
void clearBuffer();
|
|
136
169
|
unsigned int getRecordHash();
|
|
137
170
|
void smartUpdate();
|
|
138
|
-
|
|
171
|
+
|
|
172
|
+
void setMra(multiRecordAlocator* p);
|
|
173
|
+
multiRecordAlocator* mra() const;
|
|
174
|
+
|
|
175
|
+
void find(eFindType type = findForword);
|
|
139
176
|
void findFirst();
|
|
140
177
|
void findLast();
|
|
141
178
|
void findNext(bool notIncCurrent = true);
|
|
142
179
|
void findPrev(bool notIncCurrent = true);
|
|
143
180
|
bookmark_td bookmarkFindCurrent() const;
|
|
144
181
|
void setQuery(const queryBase* query);
|
|
145
|
-
void setFilter(const _TCHAR* str, ushort_td rejectCount,
|
|
146
|
-
|
|
182
|
+
void setFilter(const _TCHAR* str, ushort_td rejectCount,
|
|
183
|
+
ushort_td cacheCount, bool autoEscape = true);
|
|
147
184
|
short fieldNumByName(const _TCHAR* name);
|
|
148
185
|
unsigned char getFVbyt(short index);
|
|
149
186
|
short getFVsht(short index);
|
|
@@ -166,7 +203,6 @@ public:
|
|
|
166
203
|
void setFV(short index, double data);
|
|
167
204
|
void setFV(short index, float data);
|
|
168
205
|
void setFV(short index, unsigned char data);
|
|
169
|
-
void setFV(short index, bool data);
|
|
170
206
|
void setFV(short index, short data);
|
|
171
207
|
void setFVA(short index, const char* data);
|
|
172
208
|
void setFV(short index, int data);
|
|
@@ -179,29 +215,36 @@ public:
|
|
|
179
215
|
const wchar_t* getFVWstr(short index);
|
|
180
216
|
void setFVW(short index, const wchar_t* data);
|
|
181
217
|
void setFVW(const _TCHAR* fieldName, const wchar_t* data);
|
|
182
|
-
|
|
183
218
|
#endif
|
|
184
219
|
|
|
185
220
|
#ifdef _UNICODE
|
|
186
|
-
|
|
187
|
-
inline const wchar_t* getFVstr(
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
inline void setFV(short index, const wchar_t* data) {setFVW(index, data);};
|
|
192
|
-
|
|
193
|
-
inline void setFV(const wchar_t* fieldName, const wchar_t* data) {setFVW(fieldName, data);};
|
|
194
|
-
|
|
221
|
+
inline const wchar_t* getFVstr(short index) { return getFVWstr(index); };
|
|
222
|
+
inline const wchar_t* getFVstr(const wchar_t* fieldName)
|
|
223
|
+
{
|
|
224
|
+
return getFVWstr(fieldName);
|
|
225
|
+
};
|
|
195
226
|
#else
|
|
227
|
+
inline const char* getFVstr(short index) { return getFVAstr(index); };
|
|
228
|
+
inline const char* getFVstr(const char* fieldName)
|
|
229
|
+
{
|
|
230
|
+
return getFVAstr(fieldName);
|
|
231
|
+
};
|
|
232
|
+
#endif
|
|
196
233
|
|
|
197
|
-
inline const char*
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
inline void setFV(
|
|
204
|
-
|
|
234
|
+
inline void setFV(short index, const char* data) { setFVA(index, data); };
|
|
235
|
+
inline void setFV(const _TCHAR* fieldName, const char* data)
|
|
236
|
+
{
|
|
237
|
+
setFVA(fieldName, data);
|
|
238
|
+
};
|
|
239
|
+
#ifdef _WIN32
|
|
240
|
+
inline void setFV(short index, const wchar_t* data)
|
|
241
|
+
{
|
|
242
|
+
setFVW(index, data);
|
|
243
|
+
};
|
|
244
|
+
inline void setFV(const _TCHAR* fieldName, const wchar_t* data)
|
|
245
|
+
{
|
|
246
|
+
setFVW(fieldName, data);
|
|
247
|
+
};
|
|
205
248
|
#endif
|
|
206
249
|
|
|
207
250
|
void setFV(const _TCHAR* fieldName, double data);
|
|
@@ -211,53 +254,336 @@ public:
|
|
|
211
254
|
void setFV(const _TCHAR* fieldName, const void* data, uint_td size);
|
|
212
255
|
void setFV(short index, __int64 data);
|
|
213
256
|
void setFV(const _TCHAR* fieldName, __int64 data);
|
|
214
|
-
void* fieldPtr(short index);
|
|
257
|
+
void* fieldPtr(short index) const;
|
|
215
258
|
void keyValueDescription(_TCHAR* buf, int bufsize);
|
|
216
|
-
|
|
259
|
+
short getCurProcFieldCount() const;
|
|
260
|
+
short getCurProcFieldIndex(short index) const;
|
|
261
|
+
client::fields& fields();
|
|
217
262
|
};
|
|
218
263
|
|
|
264
|
+
#define KEYVALUE_PTR 0
|
|
265
|
+
#define KEYVALUE_STR 1
|
|
266
|
+
#define KEYVALUE_NEED_COPY 2
|
|
267
|
+
#define KEYVALUE_STR_NEED_COPY 3
|
|
268
|
+
|
|
269
|
+
/** @cond INTERNAL */
|
|
270
|
+
|
|
271
|
+
struct DLLLIB keyValuePtr
|
|
272
|
+
{
|
|
273
|
+
|
|
274
|
+
const void* ptr;
|
|
275
|
+
ushort_td len;
|
|
276
|
+
short type;
|
|
277
|
+
keyValuePtr(const void* p, ushort_td l, short typeStr);
|
|
278
|
+
~keyValuePtr();
|
|
279
|
+
};
|
|
280
|
+
/** @endcond */
|
|
219
281
|
|
|
220
|
-
class
|
|
282
|
+
class DLLLIB queryBase
|
|
221
283
|
{
|
|
222
|
-
|
|
284
|
+
friend class filter;
|
|
223
285
|
struct impl* m_impl;
|
|
224
286
|
|
|
287
|
+
protected:
|
|
225
288
|
const std::vector<std::_tstring>& getSelects() const;
|
|
226
289
|
const std::vector<std::_tstring>& getWheres() const;
|
|
227
290
|
const std::vector<std::_tstring>& getSeekKeyValues() const;
|
|
291
|
+
const std::vector<keyValuePtr>& getSeekValuesPtr() const;
|
|
292
|
+
|
|
228
293
|
public:
|
|
294
|
+
enum eOptimize
|
|
295
|
+
{
|
|
296
|
+
none = 0,
|
|
297
|
+
joinHasOneOrHasMany = 1,
|
|
298
|
+
combineCondition = 2
|
|
299
|
+
};
|
|
300
|
+
|
|
229
301
|
queryBase();
|
|
302
|
+
queryBase(const queryBase& r);
|
|
303
|
+
queryBase& operator=(const queryBase& r);
|
|
304
|
+
|
|
230
305
|
virtual ~queryBase();
|
|
231
306
|
void reset();
|
|
232
307
|
void clearSeekKeyValues();
|
|
233
308
|
void clearSelectFields();
|
|
234
309
|
void addField(const _TCHAR* name);
|
|
235
|
-
void addLogic(const _TCHAR* name, const _TCHAR* logic,
|
|
236
|
-
void addLogic(const _TCHAR* combine, const _TCHAR* name,
|
|
237
|
-
|
|
238
|
-
|
|
310
|
+
void addLogic(const _TCHAR* name, const _TCHAR* logic, const _TCHAR* value);
|
|
311
|
+
void addLogic(const _TCHAR* combine, const _TCHAR* name,
|
|
312
|
+
const _TCHAR* logic, const _TCHAR* value);
|
|
313
|
+
void addSeekKeyValue(const _TCHAR* value, bool reset = false);
|
|
314
|
+
void addSeekKeyValuePtr(const void* value, ushort_td len, short typeStr,
|
|
315
|
+
bool reset = false);
|
|
316
|
+
void reserveSeekKeyValueSize(size_t v);
|
|
317
|
+
void reserveSeekKeyValuePtrSize(size_t v);
|
|
318
|
+
queryBase& queryString(const _TCHAR* str, bool autoEscape = false);
|
|
239
319
|
queryBase& reject(int v);
|
|
240
|
-
|
|
320
|
+
queryBase& limit(int v);
|
|
241
321
|
queryBase& direction(table::eFindType v);
|
|
242
322
|
queryBase& all();
|
|
243
|
-
queryBase& optimize(
|
|
323
|
+
queryBase& optimize(eOptimize v);
|
|
324
|
+
queryBase& bookmarkAlso(bool v);
|
|
325
|
+
queryBase& joinKeySize(int v);
|
|
326
|
+
|
|
244
327
|
const _TCHAR* toString() const;
|
|
245
328
|
table::eFindType getDirection() const;
|
|
246
|
-
int getReject()const;
|
|
247
|
-
int getLimit()const;
|
|
248
|
-
bool isAll()const;
|
|
249
|
-
|
|
250
|
-
|
|
329
|
+
int getReject() const;
|
|
330
|
+
int getLimit() const;
|
|
331
|
+
bool isAll() const;
|
|
332
|
+
int getJoinKeySize() const;
|
|
333
|
+
eOptimize getOptimize() const;
|
|
334
|
+
bool isBookmarkAlso() const;
|
|
335
|
+
short selectCount() const;
|
|
336
|
+
const _TCHAR* getSelect(short index) const;
|
|
337
|
+
short whereTokens() const;
|
|
338
|
+
const _TCHAR* getWhereToken(short index) const;
|
|
339
|
+
void setWhereToken(short index, const _TCHAR* v);
|
|
340
|
+
void reverseAliasName(const _TCHAR* alias, const _TCHAR* src);
|
|
341
|
+
|
|
342
|
+
void release(); // don't virtual
|
|
251
343
|
static queryBase* create();
|
|
252
344
|
};
|
|
253
345
|
|
|
346
|
+
/** @cond INTERNAL */
|
|
347
|
+
|
|
348
|
+
inline std::_tstring lexical_cast(__int64 v)
|
|
349
|
+
{
|
|
350
|
+
_TCHAR tmp[256];
|
|
351
|
+
_i64tot_s(v, tmp, 256, 10);
|
|
352
|
+
return std::_tstring(tmp);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
inline std::_tstring lexical_cast(int v)
|
|
356
|
+
{
|
|
357
|
+
_TCHAR tmp[256];
|
|
358
|
+
_ltot_s(v, tmp, 256, 10);
|
|
359
|
+
return std::_tstring(tmp);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
inline std::_tstring lexical_cast(short v)
|
|
363
|
+
{
|
|
364
|
+
_TCHAR tmp[256];
|
|
365
|
+
_ltot_s((int)v, tmp, 256, 10);
|
|
366
|
+
return std::_tstring(tmp);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
inline std::_tstring lexical_cast(char v)
|
|
370
|
+
{
|
|
371
|
+
_TCHAR tmp[256];
|
|
372
|
+
_ltot_s((int)v, tmp, 256, 10);
|
|
373
|
+
return std::_tstring(tmp);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
inline std::_tstring lexical_cast(double v)
|
|
377
|
+
{
|
|
378
|
+
_TCHAR tmp[256];
|
|
379
|
+
_stprintf_s(tmp, 256, _T("%.*f"), 15, v);
|
|
380
|
+
return std::_tstring(tmp);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
inline std::_tstring lexical_cast(float v)
|
|
384
|
+
{
|
|
385
|
+
_TCHAR tmp[256];
|
|
386
|
+
_stprintf_s(tmp, 256, _T("%.*f"), 15, v);
|
|
387
|
+
return std::_tstring(tmp);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
inline std::_tstring lexical_cast(const _TCHAR* v)
|
|
391
|
+
{
|
|
392
|
+
return std::_tstring(v);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
class qlogic
|
|
396
|
+
{
|
|
397
|
+
std::_tstring m_name;
|
|
398
|
+
std::_tstring m_value;
|
|
399
|
+
std::_tstring m_type;
|
|
400
|
+
combineType m_next;
|
|
401
|
+
|
|
402
|
+
public:
|
|
403
|
+
template <class T>
|
|
404
|
+
qlogic(const _TCHAR* name, const _TCHAR* type, T value, combineType next)
|
|
405
|
+
: m_name(name), m_type(type), m_next(next)
|
|
406
|
+
{
|
|
407
|
+
m_value = lexical_cast(value);
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
/** @endcond */
|
|
411
|
+
|
|
412
|
+
class DLLLIB query : public queryBase
|
|
413
|
+
{
|
|
414
|
+
public:
|
|
415
|
+
query() : queryBase() {}
|
|
416
|
+
query(const query& r) : queryBase(r) {}
|
|
417
|
+
|
|
418
|
+
virtual ~query() {}
|
|
419
|
+
|
|
420
|
+
query& reset()
|
|
421
|
+
{
|
|
422
|
+
queryBase::reset();
|
|
423
|
+
return *this;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
query& select(const _TCHAR* name, const _TCHAR* name1 = NULL,
|
|
427
|
+
const _TCHAR* name2 = NULL, const _TCHAR* name3 = NULL,
|
|
428
|
+
const _TCHAR* name4 = NULL, const _TCHAR* name5 = NULL,
|
|
429
|
+
const _TCHAR* name6 = NULL, const _TCHAR* name7 = NULL,
|
|
430
|
+
const _TCHAR* name8 = NULL, const _TCHAR* name9 = NULL,
|
|
431
|
+
const _TCHAR* name10 = NULL)
|
|
432
|
+
{
|
|
433
|
+
if (_tcscmp(name, _T("*")) == 0)
|
|
434
|
+
{
|
|
435
|
+
clearSelectFields();
|
|
436
|
+
return *this;
|
|
437
|
+
}
|
|
438
|
+
addField(name);
|
|
439
|
+
if (name1)
|
|
440
|
+
addField(name1);
|
|
441
|
+
if (name2)
|
|
442
|
+
addField(name2);
|
|
443
|
+
if (name3)
|
|
444
|
+
addField(name3);
|
|
445
|
+
if (name4)
|
|
446
|
+
addField(name4);
|
|
447
|
+
if (name5)
|
|
448
|
+
addField(name5);
|
|
449
|
+
if (name6)
|
|
450
|
+
addField(name6);
|
|
451
|
+
if (name7)
|
|
452
|
+
addField(name7);
|
|
453
|
+
if (name8)
|
|
454
|
+
addField(name8);
|
|
455
|
+
if (name9)
|
|
456
|
+
addField(name9);
|
|
457
|
+
if (name10)
|
|
458
|
+
addField(name10);
|
|
459
|
+
return *this;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
template <class T>
|
|
463
|
+
query& where(const _TCHAR* name, const _TCHAR* qlogic, T value)
|
|
464
|
+
{
|
|
465
|
+
addLogic(name, qlogic, lexical_cast(value).c_str());
|
|
466
|
+
return *this;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
template <class T>
|
|
470
|
+
query& and_(const _TCHAR* name, const _TCHAR* qlogic, T value)
|
|
471
|
+
{
|
|
472
|
+
if (whereTokens() == 0)
|
|
473
|
+
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_FILTERSTRING_ERROR,
|
|
474
|
+
_T("Invalid function call."));
|
|
475
|
+
|
|
476
|
+
addLogic(_T("and"), name, qlogic, lexical_cast(value).c_str());
|
|
477
|
+
return *this;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
template <class T>
|
|
481
|
+
query& or_(const _TCHAR* name, const _TCHAR* qlogic, T value)
|
|
482
|
+
{
|
|
483
|
+
if (whereTokens() == 0)
|
|
484
|
+
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_FILTERSTRING_ERROR,
|
|
485
|
+
_T("Invalid function call."));
|
|
486
|
+
|
|
487
|
+
addLogic(_T("or"), name, qlogic, lexical_cast(value).c_str());
|
|
488
|
+
return *this;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
template <class T0, class T1, class T2, class T3, class T4, class T5,
|
|
492
|
+
class T6, class T7>
|
|
493
|
+
query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
|
|
494
|
+
const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
|
|
495
|
+
{
|
|
496
|
+
addSeekKeyValue(lexical_cast(kv0).c_str());
|
|
497
|
+
addSeekKeyValue(lexical_cast(kv1).c_str());
|
|
498
|
+
addSeekKeyValue(lexical_cast(kv2).c_str());
|
|
499
|
+
addSeekKeyValue(lexical_cast(kv3).c_str());
|
|
500
|
+
addSeekKeyValue(lexical_cast(kv4).c_str());
|
|
501
|
+
addSeekKeyValue(lexical_cast(kv5).c_str());
|
|
502
|
+
addSeekKeyValue(lexical_cast(kv6).c_str());
|
|
503
|
+
addSeekKeyValue(lexical_cast(kv7).c_str());
|
|
504
|
+
return *this;
|
|
505
|
+
}
|
|
506
|
+
template <class T0, class T1, class T2, class T3, class T4, class T5,
|
|
507
|
+
class T6>
|
|
508
|
+
query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
|
|
509
|
+
const T4 kv4, const T5 kv5, const T6 kv6)
|
|
510
|
+
{
|
|
511
|
+
addSeekKeyValue(lexical_cast(kv0).c_str());
|
|
512
|
+
addSeekKeyValue(lexical_cast(kv1).c_str());
|
|
513
|
+
addSeekKeyValue(lexical_cast(kv2).c_str());
|
|
514
|
+
addSeekKeyValue(lexical_cast(kv3).c_str());
|
|
515
|
+
addSeekKeyValue(lexical_cast(kv4).c_str());
|
|
516
|
+
addSeekKeyValue(lexical_cast(kv5).c_str());
|
|
517
|
+
addSeekKeyValue(lexical_cast(kv6).c_str());
|
|
518
|
+
return *this;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
template <class T0, class T1, class T2, class T3, class T4, class T5>
|
|
522
|
+
query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
|
|
523
|
+
const T4 kv4, const T5 kv5)
|
|
524
|
+
{
|
|
525
|
+
addSeekKeyValue(lexical_cast(kv0).c_str());
|
|
526
|
+
addSeekKeyValue(lexical_cast(kv1).c_str());
|
|
527
|
+
addSeekKeyValue(lexical_cast(kv2).c_str());
|
|
528
|
+
addSeekKeyValue(lexical_cast(kv3).c_str());
|
|
529
|
+
addSeekKeyValue(lexical_cast(kv4).c_str());
|
|
530
|
+
addSeekKeyValue(lexical_cast(kv5).c_str());
|
|
531
|
+
return *this;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
template <class T0, class T1, class T2, class T3, class T4>
|
|
535
|
+
query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
|
|
536
|
+
const T4 kv4)
|
|
537
|
+
{
|
|
538
|
+
addSeekKeyValue(lexical_cast(kv0).c_str());
|
|
539
|
+
addSeekKeyValue(lexical_cast(kv1).c_str());
|
|
540
|
+
addSeekKeyValue(lexical_cast(kv2).c_str());
|
|
541
|
+
addSeekKeyValue(lexical_cast(kv3).c_str());
|
|
542
|
+
addSeekKeyValue(lexical_cast(kv4).c_str());
|
|
543
|
+
return *this;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
template <class T0, class T1, class T2, class T3>
|
|
547
|
+
query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3)
|
|
548
|
+
{
|
|
549
|
+
addSeekKeyValue(lexical_cast(kv0).c_str());
|
|
550
|
+
addSeekKeyValue(lexical_cast(kv1).c_str());
|
|
551
|
+
addSeekKeyValue(lexical_cast(kv2).c_str());
|
|
552
|
+
addSeekKeyValue(lexical_cast(kv3).c_str());
|
|
553
|
+
return *this;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
template <class T0, class T1, class T2>
|
|
557
|
+
query& in(const T0 kv0, const T1 kv1, const T2 kv2)
|
|
558
|
+
{
|
|
559
|
+
addSeekKeyValue(lexical_cast(kv0).c_str());
|
|
560
|
+
addSeekKeyValue(lexical_cast(kv1).c_str());
|
|
561
|
+
addSeekKeyValue(lexical_cast(kv2).c_str());
|
|
562
|
+
return *this;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
template <class T0, class T1> query& in(const T0 kv0, const T1 kv1)
|
|
566
|
+
{
|
|
567
|
+
addSeekKeyValue(lexical_cast(kv0).c_str());
|
|
568
|
+
addSeekKeyValue(lexical_cast(kv1).c_str());
|
|
569
|
+
return *this;
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
template <class T0> query& in(const T0 kv0)
|
|
573
|
+
{
|
|
574
|
+
addSeekKeyValue(lexical_cast(kv0).c_str());
|
|
575
|
+
return *this;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
static query* create(); // implemet int activeTable.cpp
|
|
579
|
+
};
|
|
254
580
|
|
|
255
|
-
#pragma warning(default:4251)
|
|
581
|
+
#pragma warning(default : 4251)
|
|
256
582
|
|
|
583
|
+
} // namespace client
|
|
584
|
+
} // namespace tdap
|
|
585
|
+
} // namespace protocol
|
|
586
|
+
} // namespace db
|
|
587
|
+
} // namespace bzs
|
|
257
588
|
|
|
258
|
-
|
|
259
|
-
}// namespace tdap
|
|
260
|
-
}// namespace protocol
|
|
261
|
-
}// namespace db
|
|
262
|
-
}// namespace bzs
|
|
263
|
-
#endif//BZS_DB_PROTOCOL_TDAP_CLIENT_TABLE_H
|
|
589
|
+
#endif // BZS_DB_PROTOCOL_TDAP_CLIENT_TABLE_H
|