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
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
GNU General Public License for more details.
|
|
13
13
|
|
|
14
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
|
|
15
|
+
along with this program; if not, write to the Free Software
|
|
16
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
17
17
|
02111-1307, USA.
|
|
18
18
|
=================================================================*/
|
|
19
19
|
#include <boost/filesystem.hpp>
|
|
@@ -31,10 +31,10 @@ namespace fs = boost::filesystem;
|
|
|
31
31
|
|
|
32
32
|
namespace bzs
|
|
33
33
|
{
|
|
34
|
-
|
|
34
|
+
using namespace db::engine::mysql;
|
|
35
35
|
namespace db
|
|
36
36
|
{
|
|
37
|
-
|
|
37
|
+
using namespace protocol;
|
|
38
38
|
namespace protocol
|
|
39
39
|
{
|
|
40
40
|
namespace tdap
|
|
@@ -52,231 +52,248 @@ schemaBuilder::~schemaBuilder(void)
|
|
|
52
52
|
|
|
53
53
|
void initTableDef(table* tb, tabledef& tdef, int id)
|
|
54
54
|
{
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
tdef.cleanup();
|
|
56
|
+
tdef.setTableName(tb->name().c_str());
|
|
57
|
+
tdef.setFileName(tb->name().c_str());
|
|
58
|
+
tdef.id = id;
|
|
59
|
+
tdef.schemaCodePage = CP_UTF8;
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
uint_td copyToRecordImage(uchar* rec, void* p, uint_td size, uint_td offset)
|
|
64
63
|
{
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
memcpy(rec + offset, p, size);
|
|
65
|
+
return offset + size;
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
bool isStringType(char type)
|
|
70
69
|
{
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
70
|
+
switch (type)
|
|
71
|
+
{
|
|
72
|
+
case ft_zstring:
|
|
73
|
+
case ft_string:
|
|
74
|
+
case ft_mychar:
|
|
75
|
+
case ft_myvarchar:
|
|
76
|
+
case ft_myvarbinary:
|
|
77
|
+
case ft_wzstring:
|
|
78
|
+
case ft_wstring:
|
|
79
|
+
case ft_mywchar:
|
|
80
|
+
case ft_mywvarchar:
|
|
81
|
+
case ft_mywvarbinary:
|
|
82
|
+
return true;
|
|
83
|
+
default:
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
87
86
|
}
|
|
88
87
|
|
|
89
|
-
uchar_td convFieldType(enum enum_field_types type, uint flags, bool binary,
|
|
88
|
+
uchar_td convFieldType(enum enum_field_types type, uint flags, bool binary,
|
|
89
|
+
bool unicode)
|
|
90
90
|
{
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
91
|
+
switch (type)
|
|
92
|
+
{
|
|
93
|
+
case MYSQL_TYPE_DECIMAL:
|
|
94
|
+
return ft_decimal;
|
|
95
|
+
case MYSQL_TYPE_TINY:
|
|
96
|
+
case MYSQL_TYPE_SHORT:
|
|
97
|
+
case MYSQL_TYPE_LONG:
|
|
98
|
+
case MYSQL_TYPE_LONGLONG:
|
|
99
|
+
case MYSQL_TYPE_YEAR:
|
|
100
|
+
case MYSQL_TYPE_INT24:
|
|
101
|
+
if (flags & AUTO_INCREMENT_FLAG)
|
|
102
|
+
return (flags & UNSIGNED_FLAG) ? ft_autoIncUnsigned : ft_autoinc;
|
|
103
|
+
if ((flags & UNSIGNED_FLAG) || (type == MYSQL_TYPE_YEAR))
|
|
104
|
+
return ft_uinteger;
|
|
105
|
+
return ft_integer;
|
|
106
|
+
case MYSQL_TYPE_FLOAT:
|
|
107
|
+
case MYSQL_TYPE_DOUBLE:
|
|
108
|
+
return ft_float;
|
|
109
|
+
case MYSQL_TYPE_DATE:
|
|
110
|
+
return ft_mydate;
|
|
111
|
+
case MYSQL_TYPE_TIME:
|
|
112
|
+
return ft_mytime;
|
|
113
|
+
case MYSQL_TYPE_DATETIME:
|
|
114
|
+
return ft_mydatetime;
|
|
115
|
+
case MYSQL_TYPE_TIMESTAMP:
|
|
116
|
+
return ft_mytimestamp;
|
|
117
|
+
case MYSQL_TYPE_VARCHAR:
|
|
118
|
+
case MYSQL_TYPE_VAR_STRING: //?
|
|
119
|
+
if (binary)
|
|
120
|
+
return unicode ? ft_mywvarbinary : ft_myvarbinary;
|
|
121
|
+
return unicode ? ft_mywvarchar : ft_myvarchar;
|
|
122
|
+
case MYSQL_TYPE_STRING:
|
|
123
|
+
if (binary)
|
|
124
|
+
return unicode ? ft_wstring : ft_string;
|
|
125
|
+
return unicode ? ft_mywchar : ft_mychar;
|
|
126
|
+
case MYSQL_TYPE_TINY_BLOB:
|
|
127
|
+
case MYSQL_TYPE_BLOB:
|
|
128
|
+
case MYSQL_TYPE_LONG_BLOB:
|
|
129
|
+
case MYSQL_TYPE_MEDIUM_BLOB:
|
|
130
|
+
if (flags & BINARY_FLAG)
|
|
131
|
+
return ft_myblob;
|
|
132
|
+
return ft_mytext;
|
|
133
|
+
default:
|
|
134
|
+
return unicode ? ft_wzstring : ft_zstring;
|
|
135
|
+
}
|
|
136
|
+
return 0;
|
|
131
137
|
}
|
|
132
138
|
|
|
133
139
|
bool isUnicode(const CHARSET_INFO& cs)
|
|
134
140
|
{
|
|
135
|
-
|
|
141
|
+
return (charsetIndex(cs.csname) == CHARSET_UTF16LE);
|
|
136
142
|
}
|
|
137
143
|
|
|
138
144
|
bool isBinary(const CHARSET_INFO& cs)
|
|
139
145
|
{
|
|
140
|
-
|
|
146
|
+
return (&cs == &my_charset_bin);
|
|
141
147
|
}
|
|
142
148
|
|
|
143
149
|
short schemaBuilder::insertMetaRecord(table* mtb, table* src, int id)
|
|
144
150
|
{
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
151
|
+
uint_td datalen = 0;
|
|
152
|
+
boost::shared_array<uchar> rec(new uchar[65000]);
|
|
153
|
+
// table
|
|
154
|
+
tabledef& tdef = (tabledef&)(*rec.get());
|
|
155
|
+
initTableDef(src, tdef, id);
|
|
156
|
+
tdef.fieldCount = (uchar_td)src->fields();
|
|
157
|
+
tdef.keyCount = (uchar_td)src->keys();
|
|
158
|
+
tdef.charsetIndex = charsetIndex(src->charset().csname);
|
|
159
|
+
tdef.primaryKeyNum =
|
|
160
|
+
(src->primarykey() < tdef.keyCount) ? src->primarykey() : -1;
|
|
161
|
+
#ifdef USE_BTRV_VARIABLE_LEN
|
|
162
|
+
tdef.flags.bit0 = (src->recordFormatType() & RF_FIXED_PLUS_VALIABLE_LEN);
|
|
163
|
+
if (src->recordFormatType() & RF_FIXED_PLUS_VALIABLE_LEN)
|
|
164
|
+
tdef.fixedRecordLen =
|
|
165
|
+
(ushort_td)(src->recordLenCl() - src->lastVarFieldDataLen());
|
|
166
|
+
else
|
|
167
|
+
#endif
|
|
168
|
+
tdef.fixedRecordLen = (ushort_td)src->recordLenCl();
|
|
169
|
+
tdef.maxRecordLen = (ushort_td)src->recordLenCl();
|
|
170
|
+
tdef.pageSize = 2048;
|
|
171
|
+
tdef.optionFlags.bitA = ((src->recordFormatType() & RF_VALIABLE_LEN) != 0);
|
|
172
|
+
tdef.optionFlags.bitB = (src->blobFields() != 0);
|
|
173
|
+
|
|
174
|
+
datalen += sizeof(tabledef);
|
|
175
|
+
tdef.fieldDefs = (fielddef*)(rec.get() + datalen);
|
|
176
|
+
// field
|
|
177
|
+
ushort_td pos = 0;
|
|
178
|
+
for (int i = 0; i < src->fields(); ++i)
|
|
179
|
+
{
|
|
180
|
+
if (isNisField(src->fieldName(i)))
|
|
181
|
+
--tdef.fieldCount;
|
|
182
|
+
else
|
|
183
|
+
{
|
|
184
|
+
fielddef fd;
|
|
185
|
+
memset(&fd, 0, sizeof(fielddef));
|
|
186
|
+
fd.setName(src->fieldName(i));
|
|
187
|
+
fd.len = src->fieldLen(i); // filed->pack_length();
|
|
188
|
+
fd.pos = pos;
|
|
189
|
+
fd.type = convFieldType(src->fieldType(i), src->fieldFlags(i),
|
|
190
|
+
isBinary(src->fieldCharset(i)),
|
|
191
|
+
isUnicode(src->fieldCharset(i)));
|
|
192
|
+
pos += fd.len;
|
|
193
|
+
datalen =
|
|
194
|
+
copyToRecordImage(rec.get(), &fd, sizeof(fielddef), datalen);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// index
|
|
199
|
+
for (int i = 0; i < src->keys(); ++i)
|
|
200
|
+
{
|
|
201
|
+
const KEY& key = src->keyDef(i);
|
|
202
|
+
keydef kd;
|
|
203
|
+
memset(&kd, 0, sizeof(keydef));
|
|
204
|
+
kd.segmentCount = key.user_defined_key_parts;
|
|
205
|
+
kd.keyNumber = i;
|
|
206
|
+
int segNum = 0;
|
|
207
|
+
for (int j = 0; j < (int)key.user_defined_key_parts; ++j)
|
|
208
|
+
{
|
|
209
|
+
keySegment& sg = kd.segments[segNum];
|
|
210
|
+
KEY_PART_INFO& ks = key.key_part[j];
|
|
211
|
+
if (isNisField(ks.field->field_name))
|
|
212
|
+
--kd.segmentCount;
|
|
213
|
+
else
|
|
214
|
+
{
|
|
215
|
+
sg.fieldNum = (uchar_td)ks.field->field_index;
|
|
216
|
+
sg.flags.bit0 = !(key.flags & HA_NOSAME); // duplicate
|
|
217
|
+
sg.flags.bit1 = 1; // change able
|
|
218
|
+
sg.flags.bit4 = (j != kd.segmentCount - 1); // segment
|
|
219
|
+
sg.flags.bit8 = 1; // extend key type
|
|
220
|
+
sg.flags.bit9 = ks.null_bit ? 1 : 0; // null key
|
|
221
|
+
if (isStringType(convFieldType(
|
|
222
|
+
src->fieldType(sg.fieldNum),
|
|
223
|
+
src->fieldFlags(sg.fieldNum),
|
|
224
|
+
isBinary(src->fieldCharset(i)),
|
|
225
|
+
isUnicode(src->fieldCharset(sg.fieldNum)))))
|
|
226
|
+
sg.flags.bitA =
|
|
227
|
+
!(src->fieldFlags(sg.fieldNum) & BINCMP_FLAG);
|
|
228
|
+
if (src->fieldDataLen(sg.fieldNum) != ks.length)
|
|
229
|
+
{
|
|
230
|
+
fielddef& fd = tdef.fieldDefs[sg.fieldNum];
|
|
231
|
+
// suppot prefix key
|
|
232
|
+
fd.keylen = ks.length;
|
|
233
|
+
}
|
|
234
|
+
++segNum;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
datalen = copyToRecordImage(rec.get(), &kd, sizeof(keydef), datalen);
|
|
238
|
+
}
|
|
239
|
+
tdef = (tabledef&)(*rec.get());
|
|
240
|
+
tdef.varSize = datalen - 4;
|
|
241
|
+
mtb->clearBuffer();
|
|
242
|
+
mtb->setRecordFromPacked(rec.get(), datalen, NULL);
|
|
243
|
+
mtb->insert(true);
|
|
244
|
+
return mtb->stat();
|
|
229
245
|
}
|
|
230
246
|
|
|
231
247
|
bool isFrmFile(const std::string& name)
|
|
232
248
|
{
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
249
|
+
size_t pos = name.find(TRANSACTD_SCHEMANAME);
|
|
250
|
+
if (pos != std::string::npos)
|
|
251
|
+
return false;
|
|
252
|
+
// First of name is '#' that is alter table temp file.
|
|
253
|
+
if (name.size() && name[0] == '#')
|
|
254
|
+
return false;
|
|
255
|
+
pos = name.find(".frm");
|
|
256
|
+
if (pos != std::string::npos)
|
|
257
|
+
return pos == name.size() - 4;
|
|
258
|
+
return false;
|
|
243
259
|
}
|
|
244
260
|
|
|
245
261
|
short schemaBuilder::execute(database* db, table* mtb)
|
|
246
262
|
{
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
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
|
-
|
|
275
|
-
|
|
263
|
+
char path[FN_REFLEN + 1];
|
|
264
|
+
build_table_filename(path, sizeof(path) - 1, db->name().c_str(), "", "", 0);
|
|
265
|
+
|
|
266
|
+
std::string s = path;
|
|
267
|
+
fs::path p = s;
|
|
268
|
+
fs::directory_iterator it(p);
|
|
269
|
+
fs::directory_iterator end;
|
|
270
|
+
int id = 0;
|
|
271
|
+
short stat = 0;
|
|
272
|
+
smartTransction trn(db);
|
|
273
|
+
for (fs::directory_iterator it(p); it != end; ++it)
|
|
274
|
+
{
|
|
275
|
+
if (!is_directory(*it))
|
|
276
|
+
{
|
|
277
|
+
std::string s = it->path().filename().string();
|
|
278
|
+
if (isFrmFile(s))
|
|
279
|
+
{
|
|
280
|
+
filename_to_tablename(it->path().stem().string().c_str(), path,
|
|
281
|
+
FN_REFLEN);
|
|
282
|
+
table* tb = db->openTable(path, TD_OPEN_READONLY, NULL);
|
|
283
|
+
if (!tb->isView())
|
|
284
|
+
{
|
|
285
|
+
if ((stat = insertMetaRecord(mtb, tb, ++id)) != 0)
|
|
286
|
+
return stat;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
trn.end();
|
|
292
|
+
return stat;
|
|
276
293
|
}
|
|
277
294
|
|
|
278
|
-
}//namespace mysql
|
|
279
|
-
}//namespace protocol
|
|
280
|
-
}//namespace db
|
|
281
|
-
}//namespace tdap
|
|
282
|
-
}//namespace bzs
|
|
295
|
+
} // namespace mysql
|
|
296
|
+
} // namespace protocol
|
|
297
|
+
} // namespace db
|
|
298
|
+
} // namespace tdap
|
|
299
|
+
} // namespace bzs
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
GNU General Public License for more details.
|
|
15
15
|
|
|
16
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
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
19
|
02111-1307, USA.
|
|
20
20
|
=================================================================*/
|
|
21
21
|
|
|
@@ -24,10 +24,17 @@
|
|
|
24
24
|
|
|
25
25
|
namespace bzs
|
|
26
26
|
{
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
namespace db
|
|
29
29
|
{
|
|
30
|
-
|
|
30
|
+
namespace engine
|
|
31
|
+
{
|
|
32
|
+
namespace mysql
|
|
33
|
+
{
|
|
34
|
+
class table;
|
|
35
|
+
class database;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
31
38
|
|
|
32
39
|
namespace protocol
|
|
33
40
|
{
|
|
@@ -38,16 +45,18 @@ namespace mysql
|
|
|
38
45
|
|
|
39
46
|
class schemaBuilder
|
|
40
47
|
{
|
|
41
|
-
|
|
48
|
+
short insertMetaRecord(engine::mysql::table* mtb, engine::mysql::table* src,
|
|
49
|
+
int id);
|
|
50
|
+
|
|
42
51
|
public:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
schemaBuilder();
|
|
53
|
+
~schemaBuilder();
|
|
54
|
+
short execute(engine::mysql::database* db, engine::mysql::table* mtb);
|
|
46
55
|
};
|
|
47
56
|
|
|
48
|
-
}//namespace mysql
|
|
49
|
-
}//namespace protocol
|
|
50
|
-
}//namespace db
|
|
51
|
-
}//namespace tdap
|
|
52
|
-
}//namespace bzs
|
|
53
|
-
#endif //BZS_DB_PROTOCOL_TDAP_MYSQL_DATABASESCHEMA_H
|
|
57
|
+
} // namespace mysql
|
|
58
|
+
} // namespace protocol
|
|
59
|
+
} // namespace db
|
|
60
|
+
} // namespace tdap
|
|
61
|
+
} // namespace bzs
|
|
62
|
+
#endif // BZS_DB_PROTOCOL_TDAP_MYSQL_DATABASESCHEMA_H
|