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
data/source/bzs/db/blobStructs.h
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#ifndef
|
|
2
|
-
#define
|
|
1
|
+
#ifndef BZS_DB_BLOBSTRUCTS_H
|
|
2
|
+
#define BZS_DB_BLOBSTRUCTS_H
|
|
3
3
|
/*=================================================================
|
|
4
4
|
Copyright (C) 2013 BizStation Corp All rights reserved.
|
|
5
5
|
|
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
#include <bzs/env/compiler.h>
|
|
22
22
|
|
|
23
23
|
namespace bzs
|
|
24
|
-
{
|
|
24
|
+
{
|
|
25
25
|
namespace db
|
|
26
26
|
{
|
|
27
27
|
|
|
28
|
-
#pragma
|
|
29
|
-
pragma_pack1
|
|
28
|
+
#pragma pack(push, 1)
|
|
29
|
+
pragma_pack1;
|
|
30
30
|
|
|
31
31
|
/** bolob buffer field
|
|
32
32
|
* size byte is allways 4byte.
|
|
@@ -34,52 +34,52 @@ pragma_pack1
|
|
|
34
34
|
*/
|
|
35
35
|
struct blobField
|
|
36
36
|
{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
unsigned int size;
|
|
38
|
+
unsigned short fieldNum;
|
|
39
|
+
inline const char* data() const { return (const char*)(this + 1); }
|
|
40
|
+
inline const blobField* next() const
|
|
41
|
+
{
|
|
42
|
+
return (const blobField*)(data() + size + 2);
|
|
43
|
+
}
|
|
41
44
|
};
|
|
42
45
|
|
|
43
46
|
struct blob
|
|
44
47
|
{
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
inline blob(unsigned int size, unsigned short fnum,
|
|
49
|
+
const unsigned char* dataptr)
|
|
50
|
+
: ptr(dataptr)
|
|
51
|
+
{
|
|
52
|
+
bf.fieldNum = fnum;
|
|
53
|
+
bf.size = size;
|
|
54
|
+
}
|
|
55
|
+
blobField bf;
|
|
56
|
+
const unsigned char* ptr;
|
|
53
57
|
};
|
|
54
58
|
|
|
55
59
|
/** blob buffer header
|
|
56
|
-
*
|
|
60
|
+
*
|
|
57
61
|
*/
|
|
58
62
|
struct blobHeader
|
|
59
63
|
{
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
unsigned short rows;
|
|
65
|
+
unsigned short fieldCount;
|
|
66
|
+
mutable unsigned short curRow;
|
|
67
|
+
mutable blobField* nextField;
|
|
64
68
|
#ifndef __x86_64__
|
|
65
|
-
|
|
69
|
+
blobField* dymmySpace32; // 8byte size space for 32bit
|
|
66
70
|
#endif
|
|
67
71
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
inline void resetCur() const
|
|
73
|
+
{
|
|
74
|
+
curRow = 0;
|
|
75
|
+
nextField = (blobField*)(this + 1);
|
|
76
|
+
}
|
|
73
77
|
};
|
|
74
78
|
|
|
75
|
-
#pragma
|
|
76
|
-
pragma_pop
|
|
77
|
-
|
|
78
|
-
}//namespace db
|
|
79
|
-
}//namespace bzs
|
|
80
|
-
|
|
81
|
-
#endif //BZS_DB_BLOBSTRUCTS_H
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
#pragma pack(pop)
|
|
80
|
+
pragma_pop;
|
|
84
81
|
|
|
82
|
+
} // namespace db
|
|
83
|
+
} // namespace bzs
|
|
85
84
|
|
|
85
|
+
#endif // BZS_DB_BLOBSTRUCTS_H
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
#ifndef
|
|
2
|
-
#define
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
#ifndef BZS_DB_ENGINE_MYSQL_IREADRECORDS_H
|
|
2
|
+
#define BZS_DB_ENGINE_MYSQL_IREADRECORDS_H
|
|
3
|
+
/* =================================================================
|
|
4
|
+
Copyright (C) 2012 2013 BizStation Corp All rights reserved.
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
|
+
02111-1307, USA.
|
|
20
|
+
================================================================= */
|
|
22
21
|
|
|
23
22
|
namespace bzs
|
|
24
23
|
{
|
|
@@ -29,24 +28,25 @@ namespace engine
|
|
|
29
28
|
namespace mysql
|
|
30
29
|
{
|
|
31
30
|
|
|
32
|
-
#define REC_MACTH
|
|
33
|
-
#define REC_NOMACTH
|
|
34
|
-
#define REC_NOMACTH_NOMORE
|
|
31
|
+
#define REC_MACTH 0
|
|
32
|
+
#define REC_NOMACTH 1
|
|
33
|
+
#define REC_NOMACTH_NOMORE 2
|
|
35
34
|
|
|
36
35
|
class IReadRecordsHandler
|
|
37
36
|
{
|
|
38
37
|
|
|
39
38
|
public:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
virtual ~IReadRecordsHandler(){};
|
|
40
|
+
virtual int match(bool typeNext) const = 0;
|
|
41
|
+
virtual short write(const unsigned char* bookmark,
|
|
42
|
+
unsigned int bmlen /* , short stat=0 */) = 0;
|
|
43
|
+
virtual unsigned short rejectCount() const = 0;
|
|
44
|
+
virtual unsigned short maxRows() const = 0;
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
-
}//namespace mysql
|
|
48
|
-
}//namespace engine
|
|
49
|
-
}//namespace db
|
|
50
|
-
}//namespace bzs
|
|
47
|
+
} // namespace mysql
|
|
48
|
+
} // namespace engine
|
|
49
|
+
} // namespace db
|
|
50
|
+
} // namespace bzs
|
|
51
51
|
|
|
52
|
-
#endif //
|
|
52
|
+
#endif // BZS_DB_ENGINE_MYSQL_IREADRECORDS_H
|
|
@@ -1,35 +1,34 @@
|
|
|
1
|
-
#ifndef
|
|
2
|
-
#define
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
#ifndef BZS_DB_ENGINE_MYSQL_BOOKMARK_H
|
|
2
|
+
#define BZS_DB_ENGINE_MYSQL_BOOKMARK_H
|
|
3
|
+
/* =================================================================
|
|
4
|
+
Copyright (C) 2012 2013 BizStation Corp All rights reserved.
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
|
+
02111-1307, USA.
|
|
20
|
+
================================================================= */
|
|
21
21
|
|
|
22
22
|
#include <vector>
|
|
23
23
|
#include <bzs/rtl/exception.h>
|
|
24
24
|
#include "mysqlInternal.h"
|
|
25
25
|
|
|
26
26
|
#ifdef BOOKMARK_USE_MULTIMAP
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
#endif
|
|
27
|
+
#include <boost/multi_index_container.hpp>
|
|
28
|
+
#include <boost/multi_index/member.hpp>
|
|
29
|
+
#include <boost/multi_index/ordered_index.hpp>
|
|
30
|
+
using namespace boost::multi_index;
|
|
31
|
+
#endif // BOOKMARK_USE_MULTIMAP
|
|
33
32
|
|
|
34
33
|
namespace bzs
|
|
35
34
|
{
|
|
@@ -41,155 +40,159 @@ namespace mysql
|
|
|
41
40
|
{
|
|
42
41
|
|
|
43
42
|
#ifdef BOOKMARK_USE_MULTIMAP
|
|
44
|
-
/** The version which can reverse-refer to bookmark from raw ref using multi map
|
|
43
|
+
/** The version which can reverse-refer to bookmark from raw ref using multi map
|
|
45
44
|
* In order that this system may use a lot of memories
|
|
46
|
-
|
|
45
|
+
, there is a problem in which the fall of performance occurs.
|
|
47
46
|
*/
|
|
48
47
|
|
|
49
48
|
typedef std::vector<unsigned char> charArray;
|
|
50
|
-
|
|
49
|
+
|
|
50
|
+
struct bookmark
|
|
51
51
|
{
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
bookmark(unsigned int id, const charArray& ref):id(id), ref(ref){}
|
|
52
|
+
unsigned int id;
|
|
53
|
+
charArray ref;
|
|
55
54
|
|
|
55
|
+
bookmark(unsigned int id, const charArray& ref) : id(id), ref(ref) {}
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
struct id
|
|
59
|
-
|
|
58
|
+
struct id
|
|
59
|
+
{
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
struct ref
|
|
63
|
+
{
|
|
64
|
+
};
|
|
60
65
|
|
|
61
|
-
typedef multi_index_container<
|
|
62
|
-
|
|
63
|
-
|
|
66
|
+
typedef multi_index_container<
|
|
67
|
+
bookmark,
|
|
68
|
+
indexed_by<
|
|
69
|
+
ordered_unique<tag<id>, member<bookmark, unsigned int, &bookmark::id> >,
|
|
70
|
+
ordered_unique<tag<ref>, member<bookmark, charArray,
|
|
71
|
+
&bookmark::ref> > > > bookmarkContainer;
|
|
64
72
|
|
|
65
73
|
typedef bookmarkContainer::index<id>::type id_map;
|
|
66
74
|
typedef bookmarkContainer::index<ref>::type ref_map;
|
|
67
75
|
|
|
68
76
|
class bookmarks
|
|
69
77
|
{
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
public:
|
|
76
|
-
bookmarks(int refLen):m_refLen(refLen),m_tmpRef(refLen),m_lastbm(0)
|
|
77
|
-
{
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/** get integer bookmark pointer by raw ref pointer
|
|
81
|
-
*/
|
|
82
|
-
const unsigned char* getBookmarkPtr(unsigned char* rawRefPtr)
|
|
83
|
-
{
|
|
84
|
-
m_tmpRef.clear();
|
|
85
|
-
m_tmpRef.insert(m_tmpRef.end(), rawRefPtr, rawRefPtr+m_refLen);
|
|
86
|
-
ref_map& m = m_bms.get<ref>();
|
|
87
|
-
ref_map::iterator it = m.find(m_tmpRef);
|
|
88
|
-
if (it == m.end())
|
|
89
|
-
{
|
|
90
|
-
m_bms.insert(m_bms.end(), bookmark(++m_lastbm, m_tmpRef));
|
|
91
|
-
it = m.find(m_tmpRef);
|
|
92
|
-
}
|
|
93
|
-
return (const unsigned char*)&it->id;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
unsigned int getBookmark(unsigned char* rawRefPtr)
|
|
97
|
-
{
|
|
98
|
-
return *((unsigned int*)getBookmarkPtr(rawRefPtr));
|
|
99
|
-
}
|
|
100
|
-
/** get raw ref pointer by integer bookmark
|
|
101
|
-
*/
|
|
102
|
-
const unsigned char* getRefByBm(unsigned int bm)
|
|
103
|
-
{
|
|
104
|
-
id_map& m = m_bms.get<id>();
|
|
105
|
-
id_map::iterator it = m.find(bm);
|
|
106
|
-
if (it != m.end())
|
|
107
|
-
return &(it->ref[0]);
|
|
108
|
-
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_INVALID_BOOKMARK ,"invalid bookmark.");
|
|
109
|
-
}
|
|
78
|
+
int m_refLen;
|
|
79
|
+
int m_lastbm;
|
|
80
|
+
bookmarkContainer m_bms;
|
|
81
|
+
charArray m_tmpRef;
|
|
110
82
|
|
|
83
|
+
public:
|
|
84
|
+
bookmarks(int refLen) : m_refLen(refLen), m_tmpRef(refLen), m_lastbm(0) {}
|
|
85
|
+
|
|
86
|
+
/** get integer bookmark pointer by raw ref pointer
|
|
87
|
+
*/
|
|
88
|
+
const unsigned char* getBookmarkPtr(unsigned char* rawRefPtr)
|
|
89
|
+
{
|
|
90
|
+
m_tmpRef.clear();
|
|
91
|
+
m_tmpRef.insert(m_tmpRef.end(), rawRefPtr, rawRefPtr + m_refLen);
|
|
92
|
+
ref_map& m = m_bms.get<ref>();
|
|
93
|
+
ref_map::iterator it = m.find(m_tmpRef);
|
|
94
|
+
if (it == m.end())
|
|
95
|
+
{
|
|
96
|
+
m_bms.insert(m_bms.end(), bookmark(++m_lastbm, m_tmpRef));
|
|
97
|
+
it = m.find(m_tmpRef);
|
|
98
|
+
}
|
|
99
|
+
return (const unsigned char*)&it->id;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
unsigned int getBookmark(unsigned char* rawRefPtr)
|
|
103
|
+
{
|
|
104
|
+
return *((unsigned int*)getBookmarkPtr(rawRefPtr));
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/** get raw ref pointer by integer bookmark
|
|
108
|
+
*/
|
|
109
|
+
const unsigned char* getRefByBm(unsigned int bm)
|
|
110
|
+
{
|
|
111
|
+
id_map& m = m_bms.get<id>();
|
|
112
|
+
id_map::iterator it = m.find(bm);
|
|
113
|
+
if (it != m.end())
|
|
114
|
+
return &(it->ref[0]);
|
|
115
|
+
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_INVALID_BOOKMARK,
|
|
116
|
+
"invalid bookmark.");
|
|
117
|
+
}
|
|
111
118
|
};
|
|
112
|
-
#else //BOOKMARK_USE_MULTIMAP
|
|
119
|
+
#else // NOT BOOKMARK_USE_MULTIMAP
|
|
113
120
|
|
|
114
|
-
/** The version which returns raw ref to bookmark in simple arrangement
|
|
115
|
-
* The maximum memory size is specified in MAX_BOOKMARK_MEM_SIZE.
|
|
121
|
+
/** The version which returns raw ref to bookmark in simple arrangement
|
|
122
|
+
* The maximum memory size is specified in MAX_BOOKMARK_MEM_SIZE.
|
|
116
123
|
* When the memory exceeding it is required, it is considered as an error.
|
|
117
124
|
*/
|
|
118
125
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
#define MAX_BOOKMARK_MEM_SIZE 500*1024*1024 //500MB
|
|
126
|
+
#define MAX_BOOKMARK_MEM_SIZE 500 * 1024 * 1024 // 500MB
|
|
122
127
|
#define UNIT_OF_ALLOCCOUNT 10000
|
|
123
128
|
|
|
124
129
|
class bookmarks
|
|
125
130
|
{
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
131
|
+
size_t m_refLen;
|
|
132
|
+
size_t m_allocatedCount;
|
|
133
|
+
size_t m_usedCount;
|
|
134
|
+
unsigned char* m_ptr;
|
|
135
|
+
unsigned int m_bookmark;
|
|
136
|
+
|
|
137
|
+
void allocBuffer(size_t count)
|
|
138
|
+
{
|
|
139
|
+
if (MAX_BOOKMARK_MEM_SIZE < count * m_refLen)
|
|
140
|
+
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_INVALID_BOOKMARK,
|
|
141
|
+
"invalid bookmark.");
|
|
142
|
+
void* tmp;
|
|
143
|
+
if (m_ptr == NULL)
|
|
144
|
+
tmp = (unsigned char*)td_malloc(count * m_refLen, 0);
|
|
145
|
+
else
|
|
146
|
+
tmp = td_realloc(m_ptr, count * m_refLen, 0);
|
|
147
|
+
if (tmp)
|
|
148
|
+
m_ptr = (unsigned char*)tmp;
|
|
149
|
+
else
|
|
150
|
+
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_INVALID_BOOKMARK,
|
|
151
|
+
"invalid bookmark.");
|
|
152
|
+
m_allocatedCount = count;
|
|
153
|
+
}
|
|
147
154
|
|
|
148
155
|
public:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
return m_ptr+(bm-1)*m_refLen;
|
|
183
|
-
}
|
|
184
|
-
|
|
156
|
+
bookmarks(size_t refLen) : m_refLen(refLen), m_usedCount(0), m_ptr(NULL)
|
|
157
|
+
{
|
|
158
|
+
allocBuffer(UNIT_OF_ALLOCCOUNT);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
~bookmarks() { td_free(m_ptr); }
|
|
162
|
+
|
|
163
|
+
/** get integer bookmark pointer by raw ref pointer
|
|
164
|
+
*/
|
|
165
|
+
const unsigned char* getBookmarkPtr(unsigned char* rawRefPtr)
|
|
166
|
+
{
|
|
167
|
+
if (m_usedCount == m_allocatedCount)
|
|
168
|
+
allocBuffer(m_usedCount + UNIT_OF_ALLOCCOUNT);
|
|
169
|
+
|
|
170
|
+
memcpy(m_ptr + m_usedCount * m_refLen, rawRefPtr, m_refLen);
|
|
171
|
+
m_bookmark = (unsigned int)(++m_usedCount);
|
|
172
|
+
return (const unsigned char*)&m_bookmark;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
unsigned int getBookmark(unsigned char* rawRefPtr)
|
|
176
|
+
{
|
|
177
|
+
return *((unsigned int*)getBookmarkPtr(rawRefPtr));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** get raw ref pointer by integer bookmark
|
|
181
|
+
*/
|
|
182
|
+
const unsigned char* getRefByBm(unsigned int bm)
|
|
183
|
+
{
|
|
184
|
+
if ((0 == bm) || bm > m_usedCount)
|
|
185
|
+
THROW_BZS_ERROR_WITH_CODEMSG(STATUS_INVALID_BOOKMARK,
|
|
186
|
+
"invalid bookmark.");
|
|
187
|
+
return m_ptr + (bm - 1) * m_refLen;
|
|
188
|
+
}
|
|
185
189
|
};
|
|
186
190
|
|
|
187
|
-
#endif
|
|
188
|
-
|
|
189
|
-
}//namespace mysql
|
|
190
|
-
}//namespace engine
|
|
191
|
-
}//namespace db
|
|
192
|
-
}//namespace bzs
|
|
191
|
+
#endif // NOT BOOKMARK_USE_MULTIMAP
|
|
193
192
|
|
|
194
|
-
|
|
193
|
+
} // namespace mysql
|
|
194
|
+
} // namespace engine
|
|
195
|
+
} // namespace db
|
|
196
|
+
} // namespace bzs
|
|
195
197
|
|
|
198
|
+
#endif // BZS_DB_ENGINE_MYSQL_BOOKMARK_H
|