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
|
@@ -16,15 +16,8 @@
|
|
|
16
16
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
17
17
|
02111-1307, USA.
|
|
18
18
|
================================================================= */
|
|
19
|
-
#include <bzs/env/tstring.h>
|
|
20
|
-
#pragma hdrstop
|
|
21
|
-
|
|
22
|
-
//#define BOOST_THREAD_BUILD_LIB
|
|
23
|
-
#if (__BCPLUSPLUS__ && _WIN64)
|
|
24
|
-
# define BOOST_ALL_NO_LIB
|
|
25
|
-
#endif
|
|
26
|
-
|
|
27
19
|
#include "nsDatabase.h"
|
|
20
|
+
#include "sharedData.h"
|
|
28
21
|
#include "nsTable.h"
|
|
29
22
|
#include "stringConverter.h"
|
|
30
23
|
#include <sys/stat.h>
|
|
@@ -41,19 +34,14 @@ typedef void* HINSTANCE;
|
|
|
41
34
|
|
|
42
35
|
#pragma package(smart_init)
|
|
43
36
|
|
|
44
|
-
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
# pragma comment(lib, "libboost_filesystem-bcb-mt-s-1_39.lib")
|
|
52
|
-
# pragma comment(lib, "libboost_thread-bcb-mt-s-1_39.lib")
|
|
53
|
-
# endif
|
|
37
|
+
#ifdef __BCPLUSPLUS__
|
|
38
|
+
#ifndef _WIN64
|
|
39
|
+
#define BZS_LINK_BOOST_THREAD
|
|
40
|
+
#endif
|
|
41
|
+
#define BZS_LINK_BOOST_FILESYSTEM
|
|
42
|
+
#define BZS_LINK_BOOST_SYSTEM
|
|
43
|
+
#include <bzs/env/boost_bcb_link.h>
|
|
54
44
|
#endif
|
|
55
|
-
|
|
56
|
-
|
|
57
45
|
|
|
58
46
|
namespace bzs
|
|
59
47
|
{
|
|
@@ -68,9 +56,12 @@ namespace client
|
|
|
68
56
|
extern EnginsFunc engins;
|
|
69
57
|
unsigned int g_lastTrnTime = 0;
|
|
70
58
|
unsigned int nsdatabase::m_execCodepage = GetACP();
|
|
59
|
+
bool g_checkTablePtr = false;
|
|
71
60
|
|
|
72
|
-
|
|
73
|
-
|
|
61
|
+
PACKAGE void registEnginsPtr(EnginsFunc func)
|
|
62
|
+
{
|
|
63
|
+
engins = func;
|
|
64
|
+
}
|
|
74
65
|
|
|
75
66
|
BTRCALLID_PTR BTRCALLIDX = NULL;
|
|
76
67
|
BTRCALLID_PTR MYTICALLID = NULL;
|
|
@@ -78,45 +69,46 @@ BTRCALLID_PTR MYTICALLID = NULL;
|
|
|
78
69
|
HANDLE hBtrvDLL = NULL;
|
|
79
70
|
HANDLE hTrsdDLL = NULL;
|
|
80
71
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
#endif
|
|
72
|
+
void setTrnsctdEntryPoint(BTRCALLID_PTR p)
|
|
73
|
+
{
|
|
74
|
+
MYTICALLID = p;
|
|
75
|
+
}
|
|
86
76
|
|
|
87
77
|
BTRCALLID_PTR getTrnsctdEntryPoint()
|
|
88
78
|
{
|
|
89
79
|
if (MYTICALLID)
|
|
90
80
|
return MYTICALLID;
|
|
91
|
-
|
|
92
81
|
|
|
93
82
|
if (hTrsdDLL == NULL)
|
|
94
83
|
hTrsdDLL = LoadLibraryA(LIB_PREFIX TDCLC_LIBNAME);
|
|
95
84
|
|
|
96
85
|
if (hTrsdDLL)
|
|
97
|
-
|
|
86
|
+
{
|
|
87
|
+
MYTICALLID =
|
|
88
|
+
(BTRCALLID_PTR)GetProcAddress((HINSTANCE)hTrsdDLL, "BTRCALLID");
|
|
89
|
+
}
|
|
90
|
+
|
|
98
91
|
return MYTICALLID;
|
|
99
92
|
}
|
|
100
93
|
|
|
101
|
-
BTRCALLID_PTR getBtrvEntryPoint() {return BTRCALLIDX;}
|
|
102
|
-
|
|
103
94
|
int smartLoadLibrary()
|
|
104
95
|
{
|
|
105
|
-
|
|
106
|
-
|
|
96
|
+
int ret = 0;
|
|
97
|
+
if (hBtrvDLL == NULL)
|
|
107
98
|
hBtrvDLL = LoadLibrary(_T("W3Btrv7"));
|
|
108
99
|
|
|
109
100
|
if (hBtrvDLL == NULL)
|
|
110
101
|
hBtrvDLL = LoadLibrary(_T("WBtrv32"));
|
|
111
102
|
|
|
112
103
|
if (hBtrvDLL)
|
|
113
|
-
BTRCALLIDX =
|
|
104
|
+
BTRCALLIDX =
|
|
105
|
+
(BTRCALLID_PTR)GetProcAddress((HINSTANCE)hBtrvDLL, "BTRCALLID");
|
|
114
106
|
if (BTRCALLIDX)
|
|
115
|
-
|
|
107
|
+
ret = 1;
|
|
116
108
|
MYTICALLID = getTrnsctdEntryPoint();
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
109
|
+
if (MYTICALLID)
|
|
110
|
+
ret = 2;
|
|
111
|
+
return ret;
|
|
120
112
|
}
|
|
121
113
|
|
|
122
114
|
void smartFreeLibrary()
|
|
@@ -132,6 +124,18 @@ void smartFreeLibrary()
|
|
|
132
124
|
MYTICALLID = NULL;
|
|
133
125
|
}
|
|
134
126
|
|
|
127
|
+
void setBtrvEntryPoint(BTRCALLID_PTR p)
|
|
128
|
+
{
|
|
129
|
+
BTRCALLIDX = p;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
BTRCALLID_PTR getBtrvEntryPoint()
|
|
133
|
+
{
|
|
134
|
+
if (hBtrvDLL == NULL)
|
|
135
|
+
smartLoadLibrary();
|
|
136
|
+
return BTRCALLIDX;
|
|
137
|
+
}
|
|
138
|
+
|
|
135
139
|
struct nsdbimpl
|
|
136
140
|
{
|
|
137
141
|
int refCount;
|
|
@@ -140,7 +144,7 @@ struct nsdbimpl
|
|
|
140
144
|
short snapShotCount;
|
|
141
145
|
nstable* tables[nsdatabase::maxtables];
|
|
142
146
|
uchar_td clientID[16];
|
|
143
|
-
uchar_td* cid() {return clientID;}
|
|
147
|
+
uchar_td* cid() { return clientID; }
|
|
144
148
|
_TCHAR bdfPath[MAX_PATH];
|
|
145
149
|
short tableCount;
|
|
146
150
|
short lockWaitCount;
|
|
@@ -148,11 +152,12 @@ struct nsdbimpl
|
|
|
148
152
|
bool uriMode;
|
|
149
153
|
bool uselongFilename;
|
|
150
154
|
bool localSharing;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
bool ignoreTestPtr;
|
|
156
|
+
nsdbimpl()
|
|
157
|
+
: refCount(1), tranCount(0), id(0), snapShotCount(0), tableCount(0),
|
|
158
|
+
lockWaitCount(10), lockWaitTime(100), uriMode(false),
|
|
159
|
+
uselongFilename(false), localSharing(false), ignoreTestPtr(false)
|
|
154
160
|
{
|
|
155
|
-
|
|
156
161
|
}
|
|
157
162
|
|
|
158
163
|
void setId(unsigned short id_)
|
|
@@ -167,25 +172,25 @@ struct nsdbimpl
|
|
|
167
172
|
bdfPath[0] = 0x00;
|
|
168
173
|
}
|
|
169
174
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
nsdbimpl& operator=(const nsdbimpl& rt)
|
|
176
|
+
{
|
|
177
|
+
if (&rt != this)
|
|
178
|
+
{
|
|
179
|
+
lockWaitCount = rt.lockWaitCount;
|
|
180
|
+
lockWaitTime = rt.lockWaitCount;
|
|
181
|
+
uselongFilename = rt.uselongFilename;
|
|
182
|
+
uriMode = rt.uriMode;
|
|
183
|
+
}
|
|
184
|
+
return *this;
|
|
185
|
+
}
|
|
182
186
|
};
|
|
183
187
|
|
|
184
188
|
boost::mutex g_mutex;
|
|
189
|
+
static int g_maxEnginIndex = -1;
|
|
185
190
|
|
|
186
191
|
nsdatabase::nsdatabase() : m_stat(0)
|
|
187
192
|
{
|
|
188
|
-
|
|
193
|
+
|
|
189
194
|
int type = 0;
|
|
190
195
|
if (hBtrvDLL == 0x00)
|
|
191
196
|
type = smartLoadLibrary();
|
|
@@ -193,19 +198,21 @@ nsdatabase::nsdatabase() : m_stat(0)
|
|
|
193
198
|
m_btrcallid = getBtrvEntryPoint();
|
|
194
199
|
if (m_btrcallid == NULL)
|
|
195
200
|
m_btrcallid = getTrnsctdEntryPoint();
|
|
196
|
-
|
|
197
|
-
|
|
201
|
+
if (!m_btrcallid)
|
|
202
|
+
nstable::throwError(_T("Can't load C Interface library"),
|
|
203
|
+
ERROR_LOAD_CLIBRARY);
|
|
198
204
|
|
|
199
|
-
|
|
200
|
-
|
|
205
|
+
m_nsimpl = new nsdbimpl();
|
|
206
|
+
if ((type == 2) || MYTICALLID)
|
|
201
207
|
setUseLongFilename(true);
|
|
202
208
|
else
|
|
203
209
|
{
|
|
204
210
|
btrVersions v;
|
|
205
211
|
memset(&v, 0, sizeof(btrVersions));
|
|
206
|
-
uchar_td posblk[POS_BLOCK_SIZE] = {0x00};
|
|
212
|
+
uchar_td posblk[POS_BLOCK_SIZE] = { 0x00 };
|
|
207
213
|
getBtrVersion(&v, posblk);
|
|
208
|
-
if ((v.versions[1].majorVersion >= 9) ||
|
|
214
|
+
if ((v.versions[1].majorVersion >= 9) ||
|
|
215
|
+
(v.versions[0].majorVersion >= 9))
|
|
209
216
|
setUseLongFilename(true);
|
|
210
217
|
}
|
|
211
218
|
|
|
@@ -214,34 +221,36 @@ nsdatabase::nsdatabase() : m_stat(0)
|
|
|
214
221
|
|
|
215
222
|
boost::mutex::scoped_lock lck(g_mutex);
|
|
216
223
|
// serach empty
|
|
217
|
-
int
|
|
218
|
-
for (
|
|
219
|
-
if (engins()[
|
|
224
|
+
int index;
|
|
225
|
+
for (index = 0; index < MAX_BTRENGIN; index++)
|
|
226
|
+
if (engins()[index] == NULL)
|
|
220
227
|
break;
|
|
221
228
|
|
|
222
|
-
engins()[i] = this;
|
|
223
|
-
|
|
224
229
|
// no empty
|
|
225
|
-
if (MAX_BTRENGIN ==
|
|
230
|
+
if (MAX_BTRENGIN == index)
|
|
226
231
|
{
|
|
227
232
|
m_stat = -1;
|
|
228
233
|
return;
|
|
229
234
|
}
|
|
230
|
-
|
|
231
|
-
|
|
235
|
+
engins()[index] = this;
|
|
236
|
+
g_maxEnginIndex = std::max<int>(index, g_maxEnginIndex);
|
|
237
|
+
m_nsimpl->setId((unsigned short)index + 1);
|
|
232
238
|
}
|
|
233
239
|
|
|
234
|
-
int nsdatabase::refCount()const
|
|
240
|
+
int nsdatabase::refCount() const
|
|
241
|
+
{
|
|
242
|
+
return m_nsimpl->refCount;
|
|
243
|
+
}
|
|
235
244
|
|
|
236
245
|
void nsdatabase::addref()
|
|
237
246
|
{
|
|
238
|
-
|
|
247
|
+
++m_nsimpl->refCount;
|
|
239
248
|
}
|
|
240
249
|
|
|
241
250
|
void nsdatabase::release()
|
|
242
251
|
{
|
|
243
|
-
|
|
244
|
-
|
|
252
|
+
if (--m_nsimpl->refCount == 0)
|
|
253
|
+
delete this;
|
|
245
254
|
}
|
|
246
255
|
|
|
247
256
|
nsdatabase::~nsdatabase()
|
|
@@ -250,10 +259,11 @@ nsdatabase::~nsdatabase()
|
|
|
250
259
|
|
|
251
260
|
boost::mutex::scoped_lock lck(g_mutex);
|
|
252
261
|
if (m_nsimpl->id != 0)
|
|
253
|
-
engins()[m_nsimpl->id] = NULL;
|
|
254
|
-
|
|
262
|
+
engins()[m_nsimpl->id - 1] = NULL;
|
|
263
|
+
delete m_nsimpl;
|
|
264
|
+
m_nsimpl = 0x00;
|
|
255
265
|
#ifdef _WIN32
|
|
256
|
-
|
|
266
|
+
OutputDebugString(_T("delete database\n"));
|
|
257
267
|
#endif
|
|
258
268
|
}
|
|
259
269
|
|
|
@@ -264,50 +274,86 @@ nsdatabase* nsdatabase::clone() const
|
|
|
264
274
|
return p;
|
|
265
275
|
}
|
|
266
276
|
|
|
267
|
-
nsdatabase& nsdatabase::
|
|
277
|
+
nsdatabase& nsdatabase::operator=(const nsdatabase& rt)
|
|
268
278
|
{
|
|
269
279
|
if (&rt != this)
|
|
270
280
|
{
|
|
271
281
|
*m_nsimpl = *rt.m_nsimpl;
|
|
272
|
-
|
|
282
|
+
setUri(rt.uri());
|
|
273
283
|
m_btrcallid = rt.m_btrcallid;
|
|
274
284
|
}
|
|
275
285
|
return *this;
|
|
276
286
|
}
|
|
277
287
|
|
|
278
|
-
int nsdatabase::enableTrn() const
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
uchar_td* nsdatabase::clientID() const {return m_nsimpl->clientID;}
|
|
288
|
+
int nsdatabase::enableTrn() const
|
|
289
|
+
{
|
|
290
|
+
return m_nsimpl->tranCount;
|
|
291
|
+
}
|
|
283
292
|
|
|
284
|
-
short nsdatabase::
|
|
293
|
+
short nsdatabase::stat() const
|
|
294
|
+
{
|
|
295
|
+
return m_stat;
|
|
296
|
+
}
|
|
285
297
|
|
|
286
|
-
|
|
298
|
+
uchar_td* nsdatabase::clientID() const
|
|
299
|
+
{
|
|
300
|
+
return m_nsimpl->clientID;
|
|
301
|
+
}
|
|
287
302
|
|
|
288
|
-
|
|
303
|
+
short nsdatabase::openTableCount() const
|
|
304
|
+
{
|
|
305
|
+
return m_nsimpl->tableCount;
|
|
306
|
+
}
|
|
289
307
|
|
|
290
|
-
|
|
308
|
+
_TCHAR* nsdatabase::uri() const
|
|
309
|
+
{
|
|
310
|
+
return m_nsimpl->bdfPath;
|
|
311
|
+
}
|
|
291
312
|
|
|
292
|
-
|
|
313
|
+
bool nsdatabase::uriMode() const
|
|
314
|
+
{
|
|
315
|
+
return m_nsimpl->uriMode;
|
|
316
|
+
}
|
|
293
317
|
|
|
294
|
-
|
|
318
|
+
nstable** nsdatabase::tables()
|
|
319
|
+
{
|
|
320
|
+
return m_nsimpl->tables;
|
|
321
|
+
}
|
|
295
322
|
|
|
296
|
-
short nsdatabase::
|
|
323
|
+
short nsdatabase::lockWaitCount() const
|
|
324
|
+
{
|
|
325
|
+
return m_nsimpl->lockWaitCount;
|
|
326
|
+
}
|
|
297
327
|
|
|
298
|
-
void nsdatabase::
|
|
328
|
+
void nsdatabase::setLockWaitCount(short v)
|
|
329
|
+
{
|
|
330
|
+
m_nsimpl->lockWaitCount = v;
|
|
331
|
+
}
|
|
299
332
|
|
|
300
|
-
|
|
333
|
+
short nsdatabase::lockWaitTime() const
|
|
334
|
+
{
|
|
335
|
+
return m_nsimpl->lockWaitTime;
|
|
336
|
+
}
|
|
301
337
|
|
|
302
|
-
void nsdatabase::
|
|
338
|
+
void nsdatabase::setLockWaitTime(short v)
|
|
339
|
+
{
|
|
340
|
+
m_nsimpl->lockWaitTime = v;
|
|
341
|
+
}
|
|
303
342
|
|
|
343
|
+
bool nsdatabase::localSharing() const
|
|
344
|
+
{
|
|
345
|
+
return m_nsimpl->localSharing;
|
|
346
|
+
}
|
|
304
347
|
|
|
348
|
+
void nsdatabase::setLocalSharing(bool v)
|
|
349
|
+
{
|
|
350
|
+
m_nsimpl->localSharing = v;
|
|
351
|
+
}
|
|
305
352
|
|
|
306
353
|
bool nsdatabase::setUri(const _TCHAR* Path)
|
|
307
354
|
{
|
|
308
|
-
_TCHAR buf[MAX_PATH];
|
|
309
|
-
|
|
310
355
|
#ifdef _WIN32
|
|
356
|
+
_TCHAR buf[MAX_PATH];
|
|
311
357
|
_TCHAR* lpFilePart;
|
|
312
358
|
if (useLongFilename() == false)
|
|
313
359
|
{
|
|
@@ -320,7 +366,8 @@ bool nsdatabase::setUri(const _TCHAR* Path)
|
|
|
320
366
|
_tcscpy(m_nsimpl->bdfPath, Path);
|
|
321
367
|
|
|
322
368
|
m_nsimpl->uriMode = false;
|
|
323
|
-
if (_tcsstr(m_nsimpl->bdfPath, _T("btrv://")) ||
|
|
369
|
+
if (_tcsstr(m_nsimpl->bdfPath, _T("btrv://")) ||
|
|
370
|
+
_tcsstr(m_nsimpl->bdfPath, _T("tdap://")))
|
|
324
371
|
m_nsimpl->uriMode = true;
|
|
325
372
|
#ifdef _WIN32
|
|
326
373
|
else
|
|
@@ -333,10 +380,11 @@ bool nsdatabase::setUri(const _TCHAR* Path)
|
|
|
333
380
|
return true;
|
|
334
381
|
}
|
|
335
382
|
|
|
336
|
-
void nsdatabase::createTable(fileSpec
|
|
383
|
+
void nsdatabase::createTable(fileSpec* pfs, uint_td len,
|
|
384
|
+
const _TCHAR* pFullPath, short_td mode)
|
|
337
385
|
{
|
|
338
386
|
_TCHAR buf[MAX_PATH];
|
|
339
|
-
_TCHAR posblk[128] = {0x00};
|
|
387
|
+
_TCHAR posblk[128] = { 0x00 };
|
|
340
388
|
#ifdef _WIN32
|
|
341
389
|
if ((useLongFilename() == false) && _tcsstr(pFullPath, _T(" ")))
|
|
342
390
|
{
|
|
@@ -354,17 +402,19 @@ void nsdatabase::createTable(fileSpec *pfs, uint_td len, const _TCHAR *pFullPath
|
|
|
354
402
|
return;
|
|
355
403
|
}
|
|
356
404
|
|
|
357
|
-
char buf2[MAX_PATH]={0x00}
|
|
405
|
+
char buf2[MAX_PATH] = { 0x00 };
|
|
406
|
+
;
|
|
358
407
|
const char* p = toServerUri(buf2, MAX_PATH, buf, isUseTransactd());
|
|
359
408
|
|
|
360
|
-
m_stat =
|
|
361
|
-
|
|
409
|
+
m_stat =
|
|
410
|
+
m_btrcallid(TD_CREATETABLE, posblk, pfs, &len, (void*)p,
|
|
411
|
+
(uchar_td)strlen(p), (char_td)mode, m_nsimpl->clientID);
|
|
362
412
|
}
|
|
363
413
|
|
|
364
414
|
void nsdatabase::dropTable(const _TCHAR* pFullPath)
|
|
365
415
|
{
|
|
366
416
|
_TCHAR buf[MAX_PATH];
|
|
367
|
-
_TCHAR posblk[128] = {0x00};
|
|
417
|
+
_TCHAR posblk[128] = { 0x00 };
|
|
368
418
|
#ifdef _WIN32
|
|
369
419
|
if ((useLongFilename() == false) && _tcsstr(pFullPath, _T(" ")))
|
|
370
420
|
{
|
|
@@ -382,32 +432,33 @@ void nsdatabase::dropTable(const _TCHAR* pFullPath)
|
|
|
382
432
|
return;
|
|
383
433
|
}
|
|
384
434
|
|
|
385
|
-
char buf2[MAX_PATH]={0x00};
|
|
435
|
+
char buf2[MAX_PATH] = { 0x00 };
|
|
386
436
|
const char* p = toServerUri(buf2, MAX_PATH, buf, isUseTransactd());
|
|
387
437
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
438
|
+
m_stat =
|
|
439
|
+
m_btrcallid(TD_CREATETABLE, posblk, NULL, NULL, (void*)p,
|
|
440
|
+
(uchar_td)strlen(p) + 1, CR_SUBOP_DROP, m_nsimpl->clientID);
|
|
391
441
|
}
|
|
392
442
|
|
|
393
443
|
void nsdatabase::swapTablename(const _TCHAR* Name1, const _TCHAR* Name2)
|
|
394
444
|
{
|
|
395
|
-
_TCHAR posblk[128] = {0x00};
|
|
445
|
+
_TCHAR posblk[128] = { 0x00 };
|
|
396
446
|
|
|
397
|
-
char buf1[MAX_PATH]={0x00};
|
|
398
|
-
char buf2[MAX_PATH]={0x00};
|
|
447
|
+
char buf1[MAX_PATH] = { 0x00 };
|
|
448
|
+
char buf2[MAX_PATH] = { 0x00 };
|
|
399
449
|
const char* p = toServerUri(buf1, MAX_PATH, Name1, isUseTransactd());
|
|
400
450
|
const char* p2 = toServerUri(buf2, MAX_PATH, Name2, isUseTransactd());
|
|
401
451
|
uint_td len = (uint_td)strlen(p);
|
|
402
452
|
|
|
403
|
-
m_stat = m_btrcallid(TD_CREATETABLE, posblk, (void*)p, &len, (void*)p2,
|
|
404
|
-
|
|
453
|
+
m_stat = m_btrcallid(TD_CREATETABLE, posblk, (void*)p, &len, (void*)p2,
|
|
454
|
+
(uchar_td)strlen(p2), CR_SUBOP_SWAPNAME,
|
|
455
|
+
m_nsimpl->clientID);
|
|
405
456
|
}
|
|
406
457
|
|
|
407
458
|
void nsdatabase::rename(const _TCHAR* pFullPath, const _TCHAR* newName)
|
|
408
459
|
{
|
|
409
460
|
_TCHAR buf[MAX_PATH];
|
|
410
|
-
_TCHAR posblk[128] = {0x00};
|
|
461
|
+
_TCHAR posblk[128] = { 0x00 };
|
|
411
462
|
#ifdef _WIN32
|
|
412
463
|
if ((useLongFilename() == false) && _tcsstr(pFullPath, _T(" ")))
|
|
413
464
|
{
|
|
@@ -424,13 +475,11 @@ void nsdatabase::rename(const _TCHAR* pFullPath, const _TCHAR* newName)
|
|
|
424
475
|
return;
|
|
425
476
|
}
|
|
426
477
|
|
|
427
|
-
char buf2[MAX_PATH]={0x00};
|
|
478
|
+
char buf2[MAX_PATH] = { 0x00 };
|
|
428
479
|
const char* p = toServerUri(buf2, MAX_PATH, buf, isUseTransactd());
|
|
429
480
|
uint_td len = (uint_td)strlen(p);
|
|
430
481
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
char bufNew[MAX_PATH]={0x00};
|
|
482
|
+
char bufNew[MAX_PATH] = { 0x00 };
|
|
434
483
|
#ifdef _WIN32
|
|
435
484
|
if ((useLongFilename() == false) && _tcsstr(newName, _T(" ")))
|
|
436
485
|
GetShortPathName(newName, buf, MAX_PATH);
|
|
@@ -439,16 +488,14 @@ void nsdatabase::rename(const _TCHAR* pFullPath, const _TCHAR* newName)
|
|
|
439
488
|
_tcscpy(buf, newName);
|
|
440
489
|
toServerUri(bufNew, MAX_PATH, newName, isUseTransactd());
|
|
441
490
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
CR_SUBOP_RENAME, m_nsimpl->clientID);
|
|
491
|
+
m_stat = m_btrcallid(TD_CREATETABLE, posblk, (void*)p, &len, (void*)bufNew,
|
|
492
|
+
(uchar_td)strlen(bufNew), CR_SUBOP_RENAME,
|
|
493
|
+
m_nsimpl->clientID);
|
|
446
494
|
}
|
|
447
495
|
|
|
448
496
|
void nsdatabase::registerTable(nstable* tb)
|
|
449
497
|
{
|
|
450
|
-
int i;
|
|
451
|
-
for (i = 0; i < maxtables; i++)
|
|
498
|
+
for (int i = 0; i < maxtables; i++)
|
|
452
499
|
{
|
|
453
500
|
if (m_nsimpl->tables[i] == NULL)
|
|
454
501
|
{
|
|
@@ -461,18 +508,29 @@ void nsdatabase::registerTable(nstable* tb)
|
|
|
461
508
|
|
|
462
509
|
void nsdatabase::unregisterTable(nstable* table)
|
|
463
510
|
{
|
|
464
|
-
int i;
|
|
465
|
-
for (i = 0; i < maxtables; i++)
|
|
511
|
+
for (int i = 0; i < maxtables; i++)
|
|
466
512
|
{
|
|
467
513
|
if (m_nsimpl->tables[i] == table)
|
|
468
514
|
{
|
|
469
515
|
m_nsimpl->tables[i] = NULL;
|
|
470
516
|
m_nsimpl->tableCount--;
|
|
471
|
-
|
|
517
|
+
break;
|
|
472
518
|
}
|
|
473
519
|
}
|
|
474
520
|
}
|
|
475
521
|
|
|
522
|
+
bool nsdatabase::findTable(nstable* tb)
|
|
523
|
+
{
|
|
524
|
+
if (m_nsimpl)
|
|
525
|
+
{
|
|
526
|
+
for (int i = 0; i < maxtables; i++)
|
|
527
|
+
{
|
|
528
|
+
if (m_nsimpl->tables[i] == tb)
|
|
529
|
+
return true;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
return false;
|
|
533
|
+
}
|
|
476
534
|
|
|
477
535
|
void nsdatabase::reset()
|
|
478
536
|
{
|
|
@@ -481,11 +539,12 @@ void nsdatabase::reset()
|
|
|
481
539
|
if (m_nsimpl->tranCount)
|
|
482
540
|
{
|
|
483
541
|
#ifdef _WIN32
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
542
|
+
#ifdef LIB_TDCLCPP
|
|
543
|
+
int ret = MessageBox(NULL, _T("Is an uncompleted transaction aborted?"),
|
|
544
|
+
NULL, 33);
|
|
545
|
+
#else
|
|
546
|
+
int ret = 2;
|
|
547
|
+
#endif
|
|
489
548
|
#else
|
|
490
549
|
int ret = 2;
|
|
491
550
|
#endif
|
|
@@ -501,7 +560,7 @@ void nsdatabase::reset()
|
|
|
501
560
|
{
|
|
502
561
|
if (m_nsimpl->tables[i] != NULL)
|
|
503
562
|
{
|
|
504
|
-
|
|
563
|
+
m_nsimpl->tables[i]->destroy();
|
|
505
564
|
m_nsimpl->tables[i] = NULL;
|
|
506
565
|
}
|
|
507
566
|
}
|
|
@@ -511,20 +570,22 @@ void nsdatabase::reset()
|
|
|
511
570
|
m_nsimpl->bdfPath[0] = 0x00;
|
|
512
571
|
if (m_btrcallid)
|
|
513
572
|
{
|
|
514
|
-
m_stat = m_btrcallid(TD_RESET_CLIENT, NULL, NULL, NULL, NULL, 0, 0,
|
|
515
|
-
|
|
573
|
+
m_stat = m_btrcallid(TD_RESET_CLIENT, NULL, NULL, NULL, NULL, 0, 0,
|
|
574
|
+
m_nsimpl->clientID);
|
|
575
|
+
m_stat = m_btrcallid(TD_STOP_ENGINE, NULL, NULL, NULL, NULL, 0, 0,
|
|
576
|
+
m_nsimpl->clientID);
|
|
516
577
|
if (m_stat == ERROR_TD_NOT_CONNECTED)
|
|
517
578
|
m_stat = STATUS_SUCCESS;
|
|
518
579
|
}
|
|
519
580
|
if (getBtrvEntryPoint())
|
|
520
581
|
m_btrcallid = getBtrvEntryPoint();
|
|
521
|
-
|
|
522
582
|
}
|
|
523
583
|
|
|
524
584
|
void nsdatabase::beginSnapshot()
|
|
525
585
|
{
|
|
526
586
|
if (m_nsimpl->snapShotCount == 0)
|
|
527
|
-
m_stat = m_btrcallid(TD_BEGIN_SHAPSHOT, NULL, NULL, NULL, NULL, 0, 0,
|
|
587
|
+
m_stat = m_btrcallid(TD_BEGIN_SHAPSHOT, NULL, NULL, NULL, NULL, 0, 0,
|
|
588
|
+
m_nsimpl->clientID);
|
|
528
589
|
m_nsimpl->snapShotCount++;
|
|
529
590
|
}
|
|
530
591
|
|
|
@@ -532,19 +593,20 @@ void nsdatabase::endSnapshot()
|
|
|
532
593
|
{
|
|
533
594
|
m_nsimpl->snapShotCount--;
|
|
534
595
|
if (m_nsimpl->snapShotCount == 0)
|
|
535
|
-
m_stat = m_btrcallid(TD_END_SNAPSHOT, NULL, NULL, NULL, NULL, 0, 0,
|
|
536
|
-
|
|
596
|
+
m_stat = m_btrcallid(TD_END_SNAPSHOT, NULL, NULL, NULL, NULL, 0, 0,
|
|
597
|
+
m_nsimpl->clientID);
|
|
537
598
|
}
|
|
538
599
|
|
|
539
600
|
void nsdatabase::beginTrn(short BIAS)
|
|
540
601
|
{
|
|
541
602
|
if (m_nsimpl->tranCount == 0)
|
|
542
603
|
{
|
|
543
|
-
m_stat = m_btrcallid((ushort_td)(BIAS + TD_BEGIN_TRANSACTION), NULL,
|
|
544
|
-
|
|
604
|
+
m_stat = m_btrcallid((ushort_td)(BIAS + TD_BEGIN_TRANSACTION), NULL,
|
|
605
|
+
NULL, NULL, NULL, 0, 0, m_nsimpl->clientID);
|
|
545
606
|
if (m_stat == 0)
|
|
546
607
|
m_nsimpl->tranCount++;
|
|
547
|
-
}
|
|
608
|
+
}
|
|
609
|
+
else
|
|
548
610
|
m_nsimpl->tranCount++;
|
|
549
611
|
}
|
|
550
612
|
|
|
@@ -554,7 +616,8 @@ void nsdatabase::endTrn()
|
|
|
554
616
|
m_nsimpl->tranCount--;
|
|
555
617
|
if (m_nsimpl->tranCount == 0)
|
|
556
618
|
{
|
|
557
|
-
m_stat = m_btrcallid(TD_END_TRANSACTION, NULL, NULL, NULL, NULL, 0, 0,
|
|
619
|
+
m_stat = m_btrcallid(TD_END_TRANSACTION, NULL, NULL, NULL, NULL, 0, 0,
|
|
620
|
+
m_nsimpl->clientID);
|
|
558
621
|
|
|
559
622
|
#ifdef _WIN32
|
|
560
623
|
g_lastTrnTime = GetTickCount();
|
|
@@ -566,7 +629,8 @@ void nsdatabase::endTrn()
|
|
|
566
629
|
|
|
567
630
|
void nsdatabase::abortTrn()
|
|
568
631
|
{
|
|
569
|
-
m_stat = m_btrcallid(TD_ABORT_TRANSACTION, NULL, NULL, NULL, NULL, 0, 0,
|
|
632
|
+
m_stat = m_btrcallid(TD_ABORT_TRANSACTION, NULL, NULL, NULL, NULL, 0, 0,
|
|
633
|
+
m_nsimpl->clientID);
|
|
570
634
|
|
|
571
635
|
m_nsimpl->tranCount = 0;
|
|
572
636
|
#ifdef _WIN32
|
|
@@ -574,29 +638,33 @@ void nsdatabase::abortTrn()
|
|
|
574
638
|
#endif
|
|
575
639
|
}
|
|
576
640
|
|
|
577
|
-
short_td nsdatabase::tdapErr(HWND hWnd, _TCHAR* retbuf)
|
|
578
|
-
|
|
641
|
+
short_td nsdatabase::tdapErr(HWND hWnd, _TCHAR* retbuf)
|
|
642
|
+
{
|
|
643
|
+
return nstable::tdapErr(hWnd, m_stat, _T("Engin"), retbuf);
|
|
644
|
+
}
|
|
579
645
|
|
|
580
646
|
void nsdatabase::getBtrVersion(btrVersions* Vers, uchar_td* posblk)
|
|
581
647
|
{
|
|
582
648
|
|
|
583
|
-
uchar_td posblkTmp[128] = {0x00};
|
|
649
|
+
uchar_td posblkTmp[128] = { 0x00 };
|
|
584
650
|
if (posblk == NULL)
|
|
585
651
|
posblk = posblkTmp;
|
|
586
652
|
|
|
587
653
|
uint_td datalen = sizeof(btrVersions);
|
|
588
654
|
|
|
589
|
-
m_stat = m_btrcallid(TD_VERSION, posblk, Vers, &datalen, NULL, 0, 0,
|
|
655
|
+
m_stat = m_btrcallid(TD_VERSION, posblk, Vers, &datalen, NULL, 0, 0,
|
|
656
|
+
m_nsimpl->clientID);
|
|
590
657
|
{
|
|
591
658
|
bool remote = false;
|
|
592
659
|
if (uriMode())
|
|
593
660
|
remote = true;
|
|
594
661
|
#ifdef _WIN32
|
|
595
|
-
else if (_tcsstr(m_nsimpl->bdfPath, PSEPARATOR PSEPARATOR) ==
|
|
662
|
+
else if (_tcsstr(m_nsimpl->bdfPath, PSEPARATOR PSEPARATOR) ==
|
|
663
|
+
m_nsimpl->bdfPath)
|
|
596
664
|
remote = true;
|
|
597
665
|
else
|
|
598
666
|
{
|
|
599
|
-
_TCHAR drive[3] = {0x00};
|
|
667
|
+
_TCHAR drive[3] = { 0x00 };
|
|
600
668
|
_tcsncpy(drive, m_nsimpl->bdfPath, 2);
|
|
601
669
|
if (DRIVE_REMOTE == GetDriveType(drive))
|
|
602
670
|
remote = true;
|
|
@@ -604,7 +672,7 @@ void nsdatabase::getBtrVersion(btrVersions* Vers, uchar_td* posblk)
|
|
|
604
672
|
#endif
|
|
605
673
|
if (remote)
|
|
606
674
|
{
|
|
607
|
-
//faile shareing
|
|
675
|
+
// faile shareing
|
|
608
676
|
if (datalen / 5 == 2)
|
|
609
677
|
{
|
|
610
678
|
Vers->versions[2] = Vers->versions[1];
|
|
@@ -614,12 +682,17 @@ void nsdatabase::getBtrVersion(btrVersions* Vers, uchar_td* posblk)
|
|
|
614
682
|
else
|
|
615
683
|
memset(&Vers->versions[2], 0, sizeof(btrVersion));
|
|
616
684
|
}
|
|
617
|
-
|
|
618
685
|
}
|
|
619
686
|
|
|
620
|
-
bool nsdatabase::useLongFilename()
|
|
687
|
+
bool nsdatabase::useLongFilename()
|
|
688
|
+
{
|
|
689
|
+
return m_nsimpl->uselongFilename;
|
|
690
|
+
}
|
|
621
691
|
|
|
622
|
-
void nsdatabase::setUseLongFilename(bool value)
|
|
692
|
+
void nsdatabase::setUseLongFilename(bool value)
|
|
693
|
+
{
|
|
694
|
+
m_nsimpl->uselongFilename = value;
|
|
695
|
+
}
|
|
623
696
|
|
|
624
697
|
bool nsdatabase::setUseTransactd()
|
|
625
698
|
{
|
|
@@ -631,22 +704,26 @@ bool nsdatabase::setUseTransactd()
|
|
|
631
704
|
m_nsimpl->uriMode = true;
|
|
632
705
|
setLockWaitCount(0);
|
|
633
706
|
setLockWaitTime(0);
|
|
634
|
-
|
|
635
707
|
}
|
|
636
708
|
return (m_btrcallid != NULL);
|
|
637
709
|
}
|
|
638
710
|
|
|
639
|
-
bool nsdatabase::isTransactdUri(const _TCHAR* uri)
|
|
640
|
-
|
|
711
|
+
bool nsdatabase::isTransactdUri(const _TCHAR* uri)
|
|
712
|
+
{
|
|
713
|
+
return (_tcsstr(uri, _T("tdap://")) != NULL);
|
|
641
714
|
}
|
|
642
715
|
|
|
643
|
-
bool nsdatabase::isUseTransactd()
|
|
716
|
+
bool nsdatabase::isUseTransactd()
|
|
717
|
+
{
|
|
718
|
+
return (m_btrcallid == getTrnsctdEntryPoint());
|
|
719
|
+
}
|
|
644
720
|
|
|
645
721
|
void nsdatabase::readDatabaseDirectory(_TCHAR* retBuf, uchar_td buflen)
|
|
646
722
|
{
|
|
647
723
|
// keynum is drive name A=1 B=2 C=3 0=default
|
|
648
724
|
char tmp[128];
|
|
649
|
-
m_stat = m_btrcallid(TD_GETDIRECTORY, NULL, NULL, NULL, tmp, 128, 0,
|
|
725
|
+
m_stat = m_btrcallid(TD_GETDIRECTORY, NULL, NULL, NULL, tmp, 128, 0,
|
|
726
|
+
m_nsimpl->clientID);
|
|
650
727
|
toTChar(retBuf, tmp, buflen);
|
|
651
728
|
}
|
|
652
729
|
|
|
@@ -658,11 +735,11 @@ bool nsdatabase::connect(const _TCHAR* URI, bool newConnection)
|
|
|
658
735
|
|
|
659
736
|
uint_td datalen = 0;
|
|
660
737
|
|
|
661
|
-
char uri_a[MAX_PATH]={0x00};
|
|
738
|
+
char uri_a[MAX_PATH] = { 0x00 };
|
|
662
739
|
const char* p = toServerUri(uri_a, MAX_PATH, URI, isUseTransactd());
|
|
663
740
|
char_td keyNum = newConnection ? 3 : 0;
|
|
664
|
-
m_stat = m_btrcallid(TD_CONNECT, NULL, NULL, &datalen, (void*)p,
|
|
665
|
-
|
|
741
|
+
m_stat = m_btrcallid(TD_CONNECT, NULL, NULL, &datalen, (void*)p,
|
|
742
|
+
(keylen_td)(strlen(p) + 1), keyNum, clientID());
|
|
666
743
|
if (m_stat)
|
|
667
744
|
return false;
|
|
668
745
|
return true;
|
|
@@ -676,18 +753,17 @@ bool nsdatabase::disconnect(const _TCHAR* URI)
|
|
|
676
753
|
uint_td datalen = 0;
|
|
677
754
|
char uri_a[MAX_PATH];
|
|
678
755
|
const char* p = toServerUri(uri_a, MAX_PATH, URI, isUseTransactd());
|
|
679
|
-
m_stat = m_btrcallid(TD_CONNECT, NULL, NULL, &datalen, (void*)p,
|
|
680
|
-
|
|
756
|
+
m_stat = m_btrcallid(TD_CONNECT, NULL, NULL, &datalen, (void*)p,
|
|
757
|
+
(keylen_td)(strlen(p) + 1), 1, clientID());
|
|
681
758
|
if (m_stat)
|
|
682
759
|
return false;
|
|
683
760
|
return true;
|
|
684
|
-
|
|
685
761
|
}
|
|
686
762
|
|
|
687
763
|
bool nsdatabase::trnsactionFlushWaitStatus()
|
|
688
764
|
{
|
|
689
765
|
bool ret = false;
|
|
690
|
-
#ifdef
|
|
766
|
+
#ifdef _WIN32
|
|
691
767
|
if (g_lastTrnTime)
|
|
692
768
|
ret = ((GetTickCount() - g_lastTrnTime) < 8000);
|
|
693
769
|
else
|
|
@@ -706,22 +782,73 @@ unsigned int nsdatabase::execCodePage()
|
|
|
706
782
|
return m_execCodepage;
|
|
707
783
|
}
|
|
708
784
|
|
|
709
|
-
const char* nsdatabase::toServerUri(char* buf, int buflen, const _TCHAR* src,
|
|
785
|
+
const char* nsdatabase::toServerUri(char* buf, int buflen, const _TCHAR* src,
|
|
786
|
+
bool trd)
|
|
710
787
|
{
|
|
711
|
-
|
|
788
|
+
#ifdef _UNICODE
|
|
712
789
|
if (trd)
|
|
713
790
|
{
|
|
714
791
|
stringConverter cv(CP_UTF8, GetACP());
|
|
715
792
|
cv.convert(buf, buflen, src, strlen_t(src));
|
|
716
793
|
return buf;
|
|
717
794
|
}
|
|
718
|
-
|
|
795
|
+
#endif
|
|
719
796
|
return toChar(buf, src, buflen);
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
void nsdatabase::setTestPtrIgnore(bool v)
|
|
800
|
+
{
|
|
801
|
+
m_nsimpl->ignoreTestPtr = v;
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
bool nsdatabase::isTestPtrIgnore() const
|
|
805
|
+
{
|
|
806
|
+
return m_nsimpl->ignoreTestPtr;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
bool nsdatabase::testTablePtr(nstable* ptr)
|
|
810
|
+
{
|
|
811
|
+
if (g_checkTablePtr)
|
|
812
|
+
{
|
|
813
|
+
boost::mutex::scoped_lock lck(g_mutex);
|
|
814
|
+
for (int i = 0; i <= g_maxEnginIndex; i++)
|
|
815
|
+
{
|
|
816
|
+
nsdatabase* db = engins()[i];
|
|
817
|
+
if (db != NULL)
|
|
818
|
+
{
|
|
819
|
+
if (db->findTable(ptr))
|
|
820
|
+
{
|
|
821
|
+
if (db->isTestPtrIgnore())
|
|
822
|
+
{
|
|
823
|
+
db->setTestPtrIgnore(false);
|
|
824
|
+
return false;
|
|
825
|
+
}
|
|
826
|
+
return true;
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
return false;
|
|
831
|
+
}
|
|
832
|
+
return true;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
void nsdatabase::setCheckTablePtr(bool v)
|
|
836
|
+
{
|
|
837
|
+
g_checkTablePtr = v;
|
|
838
|
+
}
|
|
720
839
|
|
|
840
|
+
DLLUNLOADCALLBACK_PTR nsdatabase::getDllUnloadCallbackFunc()
|
|
841
|
+
{
|
|
842
|
+
if (hTrsdDLL == NULL)
|
|
843
|
+
hTrsdDLL = LoadLibraryA(LIB_PREFIX TDCLC_LIBNAME);
|
|
844
|
+
if (hTrsdDLL)
|
|
845
|
+
return (DLLUNLOADCALLBACK_PTR)GetProcAddress((HINSTANCE)hTrsdDLL,
|
|
846
|
+
"CallbackRegist");
|
|
847
|
+
return NULL;
|
|
721
848
|
}
|
|
722
849
|
|
|
723
|
-
}// namespace client
|
|
724
|
-
}// namespace tdap
|
|
725
|
-
}// namespace protocol
|
|
726
|
-
}// namespace db
|
|
727
|
-
}// namespace bzs
|
|
850
|
+
} // namespace client
|
|
851
|
+
} // namespace tdap
|
|
852
|
+
} // namespace protocol
|
|
853
|
+
} // namespace db
|
|
854
|
+
} // namespace bzs
|