transactd 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/BUILD_UNIX-JA +46 -67
- data/BUILD_WIN-JA +106 -63
- data/CMakeLists.txt +40 -15
- data/README +219 -75
- data/README-JA +207 -76
- data/README_ORMSRCGEN +118 -0
- data/README_ORMSRCGEN-JA +115 -0
- data/bin/common/tdclc_32_2_0.dll +0 -0
- data/bin/common/tdclc_64_2_0.dll +0 -0
- data/build/common/check_for_link_iconv.cmake +18 -14
- data/build/common/create_symlink.cmake.in +25 -0
- data/build/common/get_boost_libs.cmake +23 -23
- data/build/common/options.cmake +0 -66
- data/build/common/smart_install.cmake +3 -3
- data/build/common/transactd.rc.in +15 -5
- data/build/common/transactd_cl_common.cmake +37 -18
- data/build/common/transactd_cl_output.cmake +55 -13
- data/build/common/transactd_common.cmake +108 -31
- data/build/swig/php/generate.cmake.in +15 -17
- data/build/swig/php/generate.cmd.in +15 -9
- data/build/swig/php/php.swg +124 -82
- data/build/swig/php/transactd.no_yield.php +4494 -0
- data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
- data/build/swig/php/transactd.no_yield.php.patch +685 -0
- data/build/swig/php/transactd.yield.php +4461 -0
- data/build/swig/php/transactd.yield.php.git.patch +652 -0
- data/build/swig/php/transactd.yield.php.patch +652 -0
- data/build/swig/referencecounter.h +79 -0
- data/build/swig/ruby/ruby.swg +226 -76
- data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
- data/build/swig/ruby/without_gvl.swg +87 -0
- data/build/swig/tdcl.i +659 -170
- data/build/swig/validatablepointer.h +91 -0
- data/build/tdclc/CMakeLists.txt +49 -34
- data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
- data/build/tdclc/tdclc.rc +0 -0
- data/build/tdclcpp/CMakeLists.txt +84 -20
- data/build/tdclcpp/tdclcpp.rc +0 -0
- data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
- data/build/tdclrb/CMakeLists.txt +84 -66
- data/build/tdclrb/bldgem/extconf.rb +28 -3
- data/build/tdclrb/gem/helper.rb +11 -1
- data/build/tdclrb/gem_output.cmake +20 -16
- data/index_ja.html +15 -0
- data/source/bzs/db/IBlobBuffer.h +15 -17
- data/source/bzs/db/blobBuffer.h +186 -140
- data/source/bzs/db/blobStructs.h +37 -37
- data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
- data/source/bzs/db/engine/mysql/bookmark.h +150 -147
- data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
- data/source/bzs/db/engine/mysql/database.h +608 -370
- data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
- data/source/bzs/db/engine/mysql/dbManager.h +115 -104
- data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
- data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
- data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
- data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
- data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
- data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
- data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
- data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
- data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
- data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
- data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
- data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
- data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
- data/source/bzs/db/protocol/tdap/client/client.h +361 -320
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
- data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
- data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
- data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
- data/source/bzs/db/protocol/tdap/client/database.h +141 -118
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
- data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
- data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
- data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
- data/source/bzs/db/protocol/tdap/client/export.h +35 -0
- data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
- data/source/bzs/db/protocol/tdap/client/field.h +393 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
- data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
- data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
- data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
- data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
- data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
- data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
- data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
- data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
- data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
- data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
- data/source/bzs/db/protocol/tdap/client/request.h +227 -170
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
- data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
- data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
- data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
- data/source/bzs/db/protocol/tdap/client/table.h +413 -87
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
- data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
- data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
- data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
- data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
- data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
- data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
- data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
- data/source/bzs/db/transactd/appBuilderImple.h +21 -20
- data/source/bzs/db/transactd/appModule.cpp +350 -98
- data/source/bzs/db/transactd/appModule.h +31 -37
- data/source/bzs/db/transactd/connManager.cpp +138 -135
- data/source/bzs/db/transactd/connManager.h +28 -21
- data/source/bzs/db/transactd/connectionRecord.h +39 -39
- data/source/bzs/db/transactd/transactd.cpp +217 -203
- data/source/bzs/env/boost_bcb_link.h +131 -0
- data/source/bzs/env/compiler.h +136 -79
- data/source/bzs/env/crosscompile.cpp +57 -57
- data/source/bzs/env/crosscompile.h +130 -115
- data/source/bzs/env/fileopen.h +7 -8
- data/source/bzs/env/mbcswchrLinux.cpp +4 -9
- data/source/bzs/env/mbcswchrLinux.h +37 -34
- data/source/bzs/env/tcharMinGW.h +59 -0
- data/source/bzs/env/tstring.h +90 -95
- data/source/bzs/example/changeSchema.cpp +22 -23
- data/source/bzs/example/changeSchema_c.cpp +22 -24
- data/source/bzs/example/connection_pool_c.cpp +49 -104
- data/source/bzs/example/createDatabase.cpp +40 -47
- data/source/bzs/example/createDatabase_c.cpp +38 -43
- data/source/bzs/example/deleteRecords.cpp +10 -15
- data/source/bzs/example/deleteRecords_c.cpp +10 -14
- data/source/bzs/example/dropDatabase.cpp +3 -9
- data/source/bzs/example/dropDatabase_c.cpp +5 -6
- data/source/bzs/example/insertRecords.cpp +37 -29
- data/source/bzs/example/insertRecords_c.cpp +19 -25
- data/source/bzs/example/ormap_c.cpp +621 -0
- data/source/bzs/example/queryData.cpp +371 -0
- data/source/bzs/example/queryData.h +16 -0
- data/source/bzs/example/query_c.cpp +109 -0
- data/source/bzs/example/readRecords.cpp +27 -27
- data/source/bzs/example/readRecords_c.cpp +25 -23
- data/source/bzs/example/updateRecords.cpp +16 -21
- data/source/bzs/example/updateRecords_c.cpp +8 -12
- data/source/bzs/example/update_with_transaction.cpp +21 -24
- data/source/bzs/example/update_with_transaction_c.cpp +12 -15
- data/source/bzs/example/useORMRecord.cpp +177 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
- data/source/bzs/netsvc/client/tcpClient.h +541 -489
- data/source/bzs/netsvc/server/IAppModule.h +119 -32
- data/source/bzs/netsvc/server/iserver.h +21 -23
- data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
- data/source/bzs/netsvc/server/serverCpt.h +41 -43
- data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
- data/source/bzs/netsvc/server/serverPipe.h +44 -45
- data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
- data/source/bzs/netsvc/server/serverTpool.h +38 -43
- data/source/bzs/rtl/benchmark.cpp +91 -31
- data/source/bzs/rtl/benchmark.h +76 -22
- data/source/bzs/rtl/datetime.cpp +231 -233
- data/source/bzs/rtl/datetime.h +16 -16
- data/source/bzs/rtl/debuglog.cpp +48 -51
- data/source/bzs/rtl/debuglog.h +55 -44
- data/source/bzs/rtl/exception.h +55 -48
- data/source/bzs/rtl/stl_uty.cpp +27 -28
- data/source/bzs/rtl/stl_uty.h +28 -29
- data/source/bzs/rtl/stringBuffers.cpp +8 -6
- data/source/bzs/rtl/stringBuffers.h +16 -9
- data/source/bzs/rtl/strtrim.cpp +90 -91
- data/source/bzs/rtl/strtrim.h +14 -16
- data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
- data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
- data/source/bzs/test/tdclphp/bench.php +357 -0
- data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
- data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
- data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
- data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
- data/source/bzs/test/tdclrb/prepare.rb +15 -12
- data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
- data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
- data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
- data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
- data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
- data/source/bzs/test/transactdBench/workerBase.h +88 -0
- data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
- data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
- data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
- data/source/global/ormsrcgen/confParam.h +80 -0
- data/source/global/ormsrcgen/fieldName.cpp +77 -0
- data/source/global/ormsrcgen/fieldName.h +43 -0
- data/source/global/ormsrcgen/main.cpp +196 -0
- data/source/global/ormsrcgen/srcgen.cpp +763 -0
- data/source/global/ormsrcgen/srcgen.h +72 -0
- data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
- data/source/global/ormsrcgen/template/template.cnf +38 -0
- data/source/global/querystmts/querystmts.cpp +237 -0
- data/source/global/tdclatl/ConnectParams.cpp +77 -0
- data/source/global/tdclatl/ConnectParams.h +70 -0
- data/source/global/tdclatl/Database.cpp +132 -128
- data/source/global/tdclatl/Database.h +60 -49
- data/source/global/tdclatl/DbDef.cpp +68 -64
- data/source/global/tdclatl/DbDef.h +36 -36
- data/source/global/tdclatl/Field.cpp +12 -17
- data/source/global/tdclatl/Field.h +15 -12
- data/source/global/tdclatl/FieldDef.cpp +75 -36
- data/source/global/tdclatl/FieldDef.h +38 -19
- data/source/global/tdclatl/FieldDefs.cpp +74 -0
- data/source/global/tdclatl/FieldDefs.h +56 -0
- data/source/global/tdclatl/FieldNames.cpp +99 -0
- data/source/global/tdclatl/FieldNames.h +66 -0
- data/source/global/tdclatl/Flags.cpp +75 -37
- data/source/global/tdclatl/Flags.h +13 -12
- data/source/global/tdclatl/GroupQuery.cpp +119 -0
- data/source/global/tdclatl/GroupQuery.h +65 -0
- data/source/global/tdclatl/KeyDef.cpp +15 -14
- data/source/global/tdclatl/KeyDef.h +20 -17
- data/source/global/tdclatl/KeySegment.cpp +13 -12
- data/source/global/tdclatl/PooledDbManager.cpp +223 -0
- data/source/global/tdclatl/PooledDbManager.h +76 -0
- data/source/global/tdclatl/QueryBase.cpp +206 -127
- data/source/global/tdclatl/QueryBase.h +55 -59
- data/source/global/tdclatl/Record.cpp +214 -0
- data/source/global/tdclatl/Record.h +96 -0
- data/source/global/tdclatl/Recordset.cpp +278 -0
- data/source/global/tdclatl/Recordset.h +83 -0
- data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
- data/source/global/tdclatl/RecordsetQuery.h +126 -0
- data/source/global/tdclatl/Table.cpp +57 -60
- data/source/global/tdclatl/Table.h +32 -29
- data/source/global/tdclatl/TableDef.cpp +63 -62
- data/source/global/tdclatl/TableDef.h +20 -22
- data/source/global/tdclatl/TdVersion.cpp +3 -3
- data/source/global/tdclatl/TdVersion.h +15 -11
- data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
- data/source/global/tdclatl/activeTable.cpp +355 -0
- data/source/global/tdclatl/activeTable.h +79 -0
- data/source/global/tdclatl/dllmain.cpp +4 -3
- data/source/global/tdclatl/dllmain.h +7 -6
- data/source/global/tdclatl/keySegment.h +22 -18
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/stdafx.h +6 -4
- data/source/global/tdclatl/targetver.h +0 -1
- data/source/global/tdclatl/tdclatl.cpp +10 -5
- data/source/global/tdclatl/tdclatl.idl +530 -14
- data/source/linux/charsetConvert.h +78 -79
- data/source/linux/linuxTypes.h +9 -12
- data/source/linux/tchar.h +168 -166
- data/transactd.gemspec +24 -16
- metadata +98 -12
- data/bin/common/tdclc_32_1_2.dll +0 -0
- data/bin/common/tdclc_64_1_2.dll +0 -0
- data/build/tdclc/tdclc_32.cbproj +0 -173
- data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
- data/build/tdclrb/GEM_VERSION +0 -3
- data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
- data/source/bzs/example/useORM.cpp +0 -585
|
@@ -1,28 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/* =================================================================
|
|
2
|
+
Copyright (C) 2012 2013 BizStation Corp All rights reserved.
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
This program is free software; you can redistribute it and/or
|
|
5
|
+
modify it under the terms of the GNU General Public License
|
|
6
|
+
as published by the Free Software Foundation; either version 2
|
|
7
|
+
of the License, or (at your option) any later version.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
This program is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with this program; if not, write to the Free Software
|
|
16
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
17
|
+
02111-1307, USA.
|
|
18
|
+
================================================================= */
|
|
19
19
|
|
|
20
20
|
#include "dbManager.h"
|
|
21
21
|
#include <bzs/netsvc/server/IAppModule.h> //for result value macro.
|
|
22
22
|
#include <bzs/rtl/exception.h>
|
|
23
23
|
#include <time.h>
|
|
24
24
|
|
|
25
|
-
|
|
26
25
|
namespace bzs
|
|
27
26
|
{
|
|
28
27
|
namespace db
|
|
@@ -32,272 +31,285 @@ namespace engine
|
|
|
32
31
|
namespace mysql
|
|
33
32
|
{
|
|
34
33
|
|
|
35
|
-
std::string smartDbsReopen::removeName="";
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
std::string smartDbsReopen::removeName = "";
|
|
39
35
|
|
|
40
|
-
|
|
41
|
-
dbManager::dbManager():m_autoHandle(0)
|
|
36
|
+
dbManager::dbManager() : m_autoHandle(0)
|
|
42
37
|
{
|
|
43
38
|
}
|
|
44
39
|
|
|
45
|
-
|
|
46
40
|
dbManager::~dbManager()
|
|
47
41
|
{
|
|
48
|
-
|
|
49
42
|
}
|
|
50
43
|
|
|
51
44
|
bool dbManager::isShutDown() const
|
|
52
45
|
{
|
|
53
|
-
|
|
46
|
+
boost::mutex::scoped_lock lck(m_mutex);
|
|
54
47
|
#if defined(MARIADB_BASE_VERSION)
|
|
55
|
-
|
|
48
|
+
killed_state st = NOT_KILLED;
|
|
56
49
|
#else
|
|
57
|
-
|
|
50
|
+
THD::killed_state st = THD::NOT_KILLED;
|
|
58
51
|
#endif
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
for (size_t i = 0; i < m_dbs.size(); i++)
|
|
53
|
+
if ((m_dbs[i] != NULL) && (m_dbs[i]->thd()->killed != st))
|
|
54
|
+
return true;
|
|
55
|
+
return false;
|
|
63
56
|
}
|
|
64
57
|
|
|
65
|
-
void dbManager::checkNewHandle(int newHandle)const
|
|
58
|
+
void dbManager::checkNewHandle(int newHandle) const
|
|
66
59
|
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
60
|
+
for (size_t i = 0; i < m_handles.size(); i++)
|
|
61
|
+
if (m_handles[i].id == newHandle)
|
|
62
|
+
THROW_BZS_ERROR_WITH_CODEMSG(1, "Allready exits handle.");
|
|
70
63
|
}
|
|
71
64
|
|
|
72
|
-
void dbManager::
|
|
65
|
+
void dbManager::releaseDatabase(short cid)
|
|
73
66
|
{
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
67
|
+
boost::mutex::scoped_lock lck(m_mutex);
|
|
68
|
+
int index = -1;
|
|
69
|
+
for (size_t i = 0; i < m_dbs.size(); i++)
|
|
70
|
+
{
|
|
71
|
+
if ((m_dbs[i] != NULL) && (cid == m_dbs[i]->clientID()))
|
|
72
|
+
{
|
|
73
|
+
index = (int)i;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (index == -1)
|
|
78
|
+
return;
|
|
79
|
+
// close tables release thd
|
|
80
|
+
m_dbs[index].reset();
|
|
81
|
+
|
|
82
|
+
// erase handles
|
|
83
|
+
for (int i = (int)m_handles.size() - 1; i >= 0; i--)
|
|
84
|
+
if (m_handles[i].db == index)
|
|
85
|
+
m_handles.erase(m_handles.begin() + i);
|
|
94
86
|
}
|
|
95
87
|
|
|
96
88
|
database* dbManager::useDataBase(int id) const
|
|
97
89
|
{
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
90
|
+
if (id >= (int)m_dbs.size())
|
|
91
|
+
THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid database id.");
|
|
92
|
+
if (m_dbs[id] == NULL)
|
|
93
|
+
THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid database id.");
|
|
94
|
+
m_dbs[id]->use();
|
|
95
|
+
return m_dbs[id].get();
|
|
104
96
|
}
|
|
105
97
|
|
|
106
|
-
database* dbManager::createDatabase(const char* dbname, short cid)const
|
|
98
|
+
database* dbManager::createDatabase(const char* dbname, short cid) const
|
|
107
99
|
{
|
|
108
|
-
|
|
100
|
+
return new database(dbname, cid);
|
|
109
101
|
}
|
|
110
102
|
|
|
111
|
-
handle* dbManager::getHandle(int handle)const
|
|
103
|
+
handle* dbManager::getHandle(int handle) const
|
|
112
104
|
{
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
105
|
+
for (size_t i = 0; i < m_handles.size(); i++)
|
|
106
|
+
{
|
|
107
|
+
if (m_handles[i].id == handle)
|
|
108
|
+
return &m_handles[i];
|
|
109
|
+
}
|
|
110
|
+
THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid handle.");
|
|
119
111
|
}
|
|
120
112
|
|
|
121
|
-
int dbManager::getDatabaseID(short cid) const
|
|
113
|
+
int dbManager::getDatabaseID(short cid) const
|
|
122
114
|
{
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
115
|
+
for (size_t i = 0; i < m_dbs.size(); i++)
|
|
116
|
+
{
|
|
117
|
+
if (m_dbs[i] != NULL && (m_dbs[i]->clientID() == cid))
|
|
118
|
+
return (int)i;
|
|
119
|
+
}
|
|
120
|
+
return -1;
|
|
129
121
|
}
|
|
130
122
|
|
|
131
|
-
database* dbManager::getDatabaseCid(short cid) const
|
|
123
|
+
database* dbManager::getDatabaseCid(short cid) const
|
|
132
124
|
{
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
125
|
+
int id = getDatabaseID(cid);
|
|
126
|
+
if (id == -1)
|
|
127
|
+
THROW_BZS_ERROR_WITH_CODEMSG(1, "Can not create database object.");
|
|
128
|
+
|
|
129
|
+
return useDataBase(id);
|
|
138
130
|
}
|
|
139
131
|
|
|
140
|
-
database* dbManager::getDatabase(const char* dbname, short cid) const
|
|
132
|
+
database* dbManager::getDatabase(const char* dbname, short cid) const
|
|
141
133
|
{
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
134
|
+
int id = getDatabaseID(cid);
|
|
135
|
+
if (id == -1)
|
|
136
|
+
{
|
|
137
|
+
boost::shared_ptr<database> db(createDatabase(dbname, cid));
|
|
138
|
+
if (db == NULL)
|
|
139
|
+
THROW_BZS_ERROR_WITH_CODEMSG(1, "Can not create database object.");
|
|
140
|
+
m_dbs.push_back(db);
|
|
141
|
+
id = (int)m_dbs.size() - 1;
|
|
142
|
+
}
|
|
143
|
+
return useDataBase(id);
|
|
152
144
|
}
|
|
153
145
|
|
|
154
|
-
table* dbManager::getTable(int hdl, enum_sql_command cmd)const
|
|
146
|
+
table* dbManager::getTable(int hdl, enum_sql_command cmd) const
|
|
155
147
|
{
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
148
|
+
handle* h = getHandle(hdl);
|
|
149
|
+
if (h && (h->db < (int)m_dbs.size()))
|
|
150
|
+
return useDataBase(h->db)->useTable(h->tb, cmd);
|
|
160
151
|
|
|
161
|
-
|
|
152
|
+
THROW_BZS_ERROR_WITH_CODEMSG(1, "Invalid handle.");
|
|
162
153
|
}
|
|
163
154
|
|
|
164
|
-
int dbManager::addHandle(int dbid, int tableid,int assignid)
|
|
155
|
+
int dbManager::addHandle(int dbid, int tableid, int assignid)
|
|
165
156
|
{
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
157
|
+
++m_autoHandle;
|
|
158
|
+
if (assignid == -1)
|
|
159
|
+
assignid = m_autoHandle;
|
|
160
|
+
m_handles.push_back(handle(assignid, (short)dbid, (short)tableid));
|
|
161
|
+
return assignid;
|
|
171
162
|
}
|
|
172
163
|
|
|
173
164
|
int dbManager::ddl_execSql(THD* thd, const std::string& sql_stmt)
|
|
174
165
|
{
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
166
|
+
smartDbsReopen reopen(m_dbs);
|
|
167
|
+
|
|
168
|
+
thd->clear_error();
|
|
169
|
+
int result = dispatch_command(COM_QUERY, thd, (char*)sql_stmt.c_str(),
|
|
170
|
+
(uint)sql_stmt.size());
|
|
171
|
+
if (!thd->cp_isOk())
|
|
172
|
+
result = 1;
|
|
173
|
+
if (thd->is_error())
|
|
174
|
+
result = errorCode(thd->cp_get_sql_error());
|
|
175
|
+
return result;
|
|
184
176
|
}
|
|
185
177
|
|
|
186
|
-
int dbManager::ddl_createDataBase(THD* thd,
|
|
178
|
+
int dbManager::ddl_createDataBase(THD* thd, const std::string& dbname)
|
|
187
179
|
{
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
180
|
+
std::string cmd = "create database `" + dbname + "`";
|
|
181
|
+
return ddl_execSql(thd, cmd);
|
|
191
182
|
}
|
|
192
183
|
|
|
193
|
-
int dbManager::ddl_dropDataBase(THD* thd,
|
|
184
|
+
int dbManager::ddl_dropDataBase(THD* thd, const std::string& dbname,
|
|
185
|
+
const std::string& dbSqlname)
|
|
194
186
|
{
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
187
|
+
std::string cmd = "drop database `" + dbSqlname + "`";
|
|
188
|
+
smartDbsReopen::removeName = dbname;
|
|
189
|
+
int ret = ddl_execSql(thd, cmd);
|
|
190
|
+
smartDbsReopen::removeName = "";
|
|
191
|
+
for (int i = (int)m_dbs.size() - 1; i >= 0; i--)
|
|
192
|
+
{
|
|
193
|
+
if (m_dbs[i] && (m_dbs[i]->name() == dbname))
|
|
194
|
+
m_dbs.erase(m_dbs.begin() + i);
|
|
195
|
+
}
|
|
196
|
+
return ret;
|
|
205
197
|
}
|
|
206
198
|
|
|
207
199
|
int dbManager::ddl_useDataBase(THD* thd, const std::string& dbSqlname)
|
|
208
200
|
{
|
|
209
|
-
|
|
210
|
-
|
|
201
|
+
std::string cmd = "use `" + dbSqlname + "`";
|
|
202
|
+
return ddl_execSql(thd, cmd);
|
|
211
203
|
}
|
|
212
204
|
|
|
213
205
|
int dbManager::closeCacheTable(database* db, const std::string& tbname)
|
|
214
206
|
{
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
207
|
+
if (database::tableRef.count(db->name(), tbname))
|
|
208
|
+
return DBM_ERROR_TABLE_USED;
|
|
209
|
+
|
|
210
|
+
TABLE_LIST tables;
|
|
211
|
+
tables.init_one_table(db->name().c_str(), db->name().size(), tbname.c_str(),
|
|
212
|
+
tbname.size(), tbname.c_str(), TL_READ);
|
|
213
|
+
if (close_cached_tables(db->thd(), &tables, true, 50000000L))
|
|
214
|
+
return HA_ERR_LOCK_WAIT_TIMEOUT;
|
|
215
|
+
return 0;
|
|
224
216
|
}
|
|
225
217
|
|
|
226
|
-
int dbManager::ddl_dropTable(database* db, const std::string& tbname,
|
|
227
|
-
|
|
218
|
+
int dbManager::ddl_dropTable(database* db, const std::string& tbname,
|
|
219
|
+
const std::string& dbSqlname,
|
|
220
|
+
const std::string& tbSqlname)
|
|
228
221
|
{
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
222
|
+
db->closeTable(tbname.c_str(), true);
|
|
223
|
+
int ret = closeCacheTable(db, tbname);
|
|
224
|
+
if (ret)
|
|
225
|
+
return ret;
|
|
226
|
+
db->thd()->variables.lock_wait_timeout = 0;
|
|
227
|
+
std::string cmd = "drop table `" + dbSqlname + "`.`" + tbSqlname + "`";
|
|
228
|
+
return ddl_execSql(db->thd(), cmd);
|
|
236
229
|
}
|
|
237
230
|
|
|
238
|
-
int dbManager::ddl_renameTable(database* db, const std::string& oldName,
|
|
239
|
-
|
|
231
|
+
int dbManager::ddl_renameTable(database* db, const std::string& oldName,
|
|
232
|
+
const std::string& dbSqlName,
|
|
233
|
+
const std::string& oldSqlName,
|
|
234
|
+
const std::string& newSqlName)
|
|
240
235
|
{
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
236
|
+
db->closeTable(oldName.c_str(), true);
|
|
237
|
+
int ret = closeCacheTable(db, oldName);
|
|
238
|
+
if (ret)
|
|
239
|
+
return ret;
|
|
240
|
+
|
|
241
|
+
std::string cmd = "rename table `" + dbSqlName + "`.`" + oldSqlName +
|
|
242
|
+
"` to `" + dbSqlName + "`.`" + newSqlName + "`";
|
|
243
|
+
return ddl_execSql(db->thd(), cmd);
|
|
247
244
|
}
|
|
248
245
|
|
|
249
|
-
int dbManager::ddl_replaceTable(database* db
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
246
|
+
int dbManager::ddl_replaceTable(database* db, const std::string& name1,
|
|
247
|
+
const std::string& name2,
|
|
248
|
+
const std::string& dbSqlName,
|
|
249
|
+
const std::string& nameSql1,
|
|
250
|
+
const std::string& nameSql2)
|
|
251
|
+
{ // rename name1 to name2.
|
|
252
|
+
db->closeTable(name1.c_str(), true);
|
|
253
|
+
db->closeTable(name2.c_str(), true);
|
|
254
|
+
char nameSql3[255];
|
|
255
|
+
|
|
256
|
+
time_t timer_ = time(NULL);
|
|
257
|
+
struct tm* t = localtime(&timer_);
|
|
258
|
+
sprintf(nameSql3, "%s_trsctd_%4d%02d%02d_%02d%02d%02d", nameSql1.c_str(),
|
|
259
|
+
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min,
|
|
260
|
+
t->tm_sec);
|
|
261
|
+
|
|
262
|
+
int ret = closeCacheTable(db, name2);
|
|
263
|
+
if (ret)
|
|
264
|
+
return ret;
|
|
265
|
+
|
|
266
|
+
std::string cmd = "rename table `" + dbSqlName + "`.`" + nameSql2 +
|
|
267
|
+
"` to `" + dbSqlName + "`.`" + nameSql3 + "`,`" +
|
|
268
|
+
dbSqlName + "`.`" + nameSql1 + "` to `" + dbSqlName +
|
|
269
|
+
"`.`" + nameSql2 + "`";
|
|
270
|
+
ret = ddl_execSql(db->thd(), cmd);
|
|
271
|
+
if (ret == 0)
|
|
272
|
+
{
|
|
273
|
+
std::string cmd = "drop table `" + dbSqlName + "`.`" + nameSql3 + "`";
|
|
274
|
+
return ddl_execSql(db->thd(), cmd);
|
|
275
|
+
}
|
|
276
|
+
return ret;
|
|
275
277
|
}
|
|
276
278
|
|
|
277
|
-
std::string
|
|
279
|
+
std::string
|
|
280
|
+
dbManager::makeSQLChangeTableComment(const std::string& dbSqlName,
|
|
281
|
+
const std::string& tableSqlName,
|
|
282
|
+
const char* comment)
|
|
278
283
|
{
|
|
279
|
-
|
|
280
|
-
|
|
284
|
+
std::string s = "alter table `" + dbSqlName + "`.`" + tableSqlName +
|
|
285
|
+
"` comment \"" + comment + "\"";
|
|
286
|
+
return s;
|
|
281
287
|
}
|
|
282
288
|
|
|
283
289
|
/** Key name of multi byte charctord is not supported. Use only ascii.
|
|
284
|
-
*/
|
|
285
|
-
std::string dbManager::makeSQLDropIndex(const std::string& dbSqlName,
|
|
290
|
+
*/
|
|
291
|
+
std::string dbManager::makeSQLDropIndex(const std::string& dbSqlName,
|
|
292
|
+
const std::string& tbSqlName,
|
|
293
|
+
const char* name)
|
|
286
294
|
{
|
|
287
|
-
|
|
288
|
-
|
|
295
|
+
std::string s = "drop index `" + std::string(name) + "` on `" + dbSqlName +
|
|
296
|
+
"`.`" + tbSqlName + "`";
|
|
297
|
+
return s;
|
|
289
298
|
}
|
|
290
299
|
|
|
291
300
|
void dbManager::clenupNoException()
|
|
292
301
|
{
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
302
|
+
try
|
|
303
|
+
{
|
|
304
|
+
if (m_tb)
|
|
305
|
+
m_tb->unUse();
|
|
306
|
+
}
|
|
307
|
+
catch (...)
|
|
308
|
+
{
|
|
309
|
+
}
|
|
298
310
|
}
|
|
299
311
|
|
|
300
|
-
}//namespace mysql
|
|
301
|
-
}//namespace engine
|
|
302
|
-
}//namespace db
|
|
303
|
-
}//namespace bzs
|
|
312
|
+
} // namespace mysql
|
|
313
|
+
} // namespace engine
|
|
314
|
+
} // namespace db
|
|
315
|
+
} // namespace bzs
|