transactd 1.0.1
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 +7 -0
- data/BUILD_UNIX-JA +174 -0
- data/BUILD_WIN-JA +256 -0
- data/CMakeLists.txt +96 -0
- data/COPYING +339 -0
- data/README +406 -0
- data/README-JA +424 -0
- data/bin/common/tdclc_32_1_0.dll +0 -0
- data/bin/common/tdclc_64_1_0.dll +0 -0
- data/build/common/check_for_link_iconv.cmake +73 -0
- data/build/common/copyifgreater.cmd +30 -0
- data/build/common/copyifgreater.js +290 -0
- data/build/common/get_boost_libs.cmake +106 -0
- data/build/common/get_ruby_path.cmake +115 -0
- data/build/common/options.cmake +127 -0
- data/build/common/smart_install.cmake +263 -0
- data/build/common/system.cmake +122 -0
- data/build/common/transactd.rc.in +52 -0
- data/build/common/transactd_cl_common.cmake +101 -0
- data/build/common/transactd_cl_output.cmake +93 -0
- data/build/common/transactd_common.cmake +237 -0
- data/build/common/transactd_required.cmake +28 -0
- data/build/swig/ruby/generate.cmake.in +35 -0
- data/build/swig/ruby/generate.cmd.in +19 -0
- data/build/swig/ruby/ruby.swg +101 -0
- data/build/swig/tdcl.i +188 -0
- data/build/tdclc/BUILDNUMBER.txt +1 -0
- data/build/tdclc/CMakeLists.txt +170 -0
- data/build/tdclc/tdclc_32.cbproj +181 -0
- data/build/tdclc/tdclc_64.cbproj +205 -0
- data/build/tdclcpp/BUILDNUMBER.txt +1 -0
- data/build/tdclcpp/CMakeLists.txt +142 -0
- data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
- data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
- data/build/tdclrb/BUILDNUMBER.txt +1 -0
- data/build/tdclrb/CMakeLists.txt +258 -0
- data/build/tdclrb/GEM_VERSION +3 -0
- data/build/tdclrb/bldgem/extconf.rb +123 -0
- data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
- data/build/tdclrb/gem/Makefile.win32-VS +65 -0
- data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
- data/build/tdclrb/gem/detect.rb +31 -0
- data/build/tdclrb/gem/helper.rb +113 -0
- data/build/tdclrb/gem/transactd.rb +22 -0
- data/build/tdclrb/gem_output.cmake +44 -0
- data/source/bzs/db/IBlobBuffer.h +51 -0
- data/source/bzs/db/blobBuffer.h +177 -0
- data/source/bzs/db/blobStructs.h +85 -0
- data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
- data/source/bzs/db/engine/mysql/bookmark.h +195 -0
- data/source/bzs/db/engine/mysql/database.cpp +1882 -0
- data/source/bzs/db/engine/mysql/database.h +465 -0
- data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
- data/source/bzs/db/engine/mysql/dbManager.h +143 -0
- data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
- data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
- data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
- data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
- data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
- data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
- data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
- data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
- data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
- data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
- data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
- data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
- data/source/bzs/db/protocol/tdap/client/client.h +292 -0
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
- data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
- data/source/bzs/db/protocol/tdap/client/database.h +118 -0
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
- data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
- data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
- data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
- data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
- data/source/bzs/db/protocol/tdap/client/request.h +198 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
- data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
- data/source/bzs/db/protocol/tdap/client/table.h +221 -0
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
- data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
- data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
- data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
- data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
- data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
- data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
- data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
- data/source/bzs/db/transactd/appBuilderImple.h +55 -0
- data/source/bzs/db/transactd/appModule.cpp +183 -0
- data/source/bzs/db/transactd/appModule.h +80 -0
- data/source/bzs/db/transactd/connManager.cpp +201 -0
- data/source/bzs/db/transactd/connManager.h +60 -0
- data/source/bzs/db/transactd/connectionRecord.h +69 -0
- data/source/bzs/db/transactd/transactd.cpp +325 -0
- data/source/bzs/env/compiler.h +135 -0
- data/source/bzs/env/crosscompile.cpp +130 -0
- data/source/bzs/env/crosscompile.h +150 -0
- data/source/bzs/env/fileopen.h +36 -0
- data/source/bzs/env/mbcswchrLinux.cpp +40 -0
- data/source/bzs/env/mbcswchrLinux.h +88 -0
- data/source/bzs/env/tstring.h +183 -0
- data/source/bzs/example/changeSchema.cpp +117 -0
- data/source/bzs/example/changeSchema_c.cpp +78 -0
- data/source/bzs/example/connection_pool_c.cpp +171 -0
- data/source/bzs/example/createDatabase.cpp +305 -0
- data/source/bzs/example/createDatabase_c.cpp +202 -0
- data/source/bzs/example/deleteRecords.cpp +87 -0
- data/source/bzs/example/deleteRecords_c.cpp +57 -0
- data/source/bzs/example/dropDatabase.cpp +59 -0
- data/source/bzs/example/dropDatabase_c.cpp +34 -0
- data/source/bzs/example/insertRecords.cpp +212 -0
- data/source/bzs/example/insertRecords_c.cpp +153 -0
- data/source/bzs/example/readRecords.cpp +141 -0
- data/source/bzs/example/readRecords_c.cpp +107 -0
- data/source/bzs/example/updateRecords.cpp +99 -0
- data/source/bzs/example/updateRecords_c.cpp +71 -0
- data/source/bzs/example/update_with_transaction.cpp +104 -0
- data/source/bzs/example/update_with_transaction_c.cpp +80 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
- data/source/bzs/netsvc/client/tcpClient.h +489 -0
- data/source/bzs/netsvc/server/IAppModule.h +94 -0
- data/source/bzs/netsvc/server/iserver.h +65 -0
- data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
- data/source/bzs/netsvc/server/serverCpt.h +88 -0
- data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
- data/source/bzs/netsvc/server/serverPipe.h +96 -0
- data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
- data/source/bzs/netsvc/server/serverTpool.h +84 -0
- data/source/bzs/rtl/benchmark.cpp +96 -0
- data/source/bzs/rtl/benchmark.h +65 -0
- data/source/bzs/rtl/datetime.cpp +375 -0
- data/source/bzs/rtl/datetime.h +53 -0
- data/source/bzs/rtl/debuglog.cpp +106 -0
- data/source/bzs/rtl/debuglog.h +97 -0
- data/source/bzs/rtl/exception.h +116 -0
- data/source/bzs/rtl/stl_uty.cpp +35 -0
- data/source/bzs/rtl/stl_uty.h +29 -0
- data/source/bzs/rtl/stringBuffers.cpp +101 -0
- data/source/bzs/rtl/stringBuffers.h +58 -0
- data/source/bzs/rtl/strtrim.cpp +135 -0
- data/source/bzs/rtl/strtrim.h +46 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
- data/source/bzs/test/tdclrb/prepare.rb +226 -0
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
- data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
- data/source/global/tdclatl/Database.cpp +503 -0
- data/source/global/tdclatl/Database.h +139 -0
- data/source/global/tdclatl/DbDef.cpp +242 -0
- data/source/global/tdclatl/DbDef.h +79 -0
- data/source/global/tdclatl/Field.cpp +92 -0
- data/source/global/tdclatl/Field.h +59 -0
- data/source/global/tdclatl/FieldDef.cpp +238 -0
- data/source/global/tdclatl/FieldDef.h +87 -0
- data/source/global/tdclatl/Flags.cpp +111 -0
- data/source/global/tdclatl/Flags.h +55 -0
- data/source/global/tdclatl/KeyDef.cpp +51 -0
- data/source/global/tdclatl/KeyDef.h +55 -0
- data/source/global/tdclatl/KeySegment.cpp +55 -0
- data/source/global/tdclatl/Table.cpp +600 -0
- data/source/global/tdclatl/Table.h +144 -0
- data/source/global/tdclatl/TableDef.cpp +291 -0
- data/source/global/tdclatl/TableDef.h +86 -0
- data/source/global/tdclatl/TdVersion.cpp +74 -0
- data/source/global/tdclatl/TdVersion.h +54 -0
- data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
- data/source/global/tdclatl/dllmain.cpp +30 -0
- data/source/global/tdclatl/dllmain.h +27 -0
- data/source/global/tdclatl/keySegment.h +57 -0
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/stdafx.cpp +2 -0
- data/source/global/tdclatl/stdafx.h +25 -0
- data/source/global/tdclatl/targetver.h +4 -0
- data/source/global/tdclatl/tdclatl.cpp +68 -0
- data/source/global/tdclatl/tdclatl.def +10 -0
- data/source/global/tdclatl/tdclatl.idl +1035 -0
- data/source/linux/charsetConvert.h +112 -0
- data/source/linux/linuxTypes.h +33 -0
- data/source/linux/tchar.h +428 -0
- data/transactd.gemspec +97 -0
- metadata +267 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
#ifndef BZS_DB_PROTOCOL_TDAP_BTRDATE_H
|
|
2
|
+
#define BZS_DB_PROTOCOL_TDAP_BTRDATE_H
|
|
3
|
+
/* =================================================================
|
|
4
|
+
Copyright (C) 2000-2013 BizStation Corp All rights reserved.
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
|
+
02111-1307, USA.
|
|
20
|
+
================================================================= */
|
|
21
|
+
|
|
22
|
+
#include <bzs/env/compiler.h>
|
|
23
|
+
#include <bzs/env/crosscompile.h>
|
|
24
|
+
|
|
25
|
+
namespace bzs
|
|
26
|
+
{
|
|
27
|
+
namespace db
|
|
28
|
+
{
|
|
29
|
+
namespace protocol
|
|
30
|
+
{
|
|
31
|
+
namespace tdap
|
|
32
|
+
{
|
|
33
|
+
|
|
34
|
+
#pragma option -a-
|
|
35
|
+
pragma_pack1
|
|
36
|
+
|
|
37
|
+
#ifdef SWIG
|
|
38
|
+
/* For swig interface
|
|
39
|
+
export field names.
|
|
40
|
+
*/
|
|
41
|
+
union btrDate
|
|
42
|
+
{
|
|
43
|
+
char dd;
|
|
44
|
+
char mm;
|
|
45
|
+
short yy;
|
|
46
|
+
int i;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
union btrTime
|
|
50
|
+
{
|
|
51
|
+
char uu;
|
|
52
|
+
char ss;
|
|
53
|
+
char nn;
|
|
54
|
+
char hh;
|
|
55
|
+
int i;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
union btrDateTime
|
|
59
|
+
{
|
|
60
|
+
btrTime time;
|
|
61
|
+
btrDate date;
|
|
62
|
+
__int64 i64;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
#else
|
|
66
|
+
|
|
67
|
+
union btrDate
|
|
68
|
+
{
|
|
69
|
+
struct
|
|
70
|
+
{
|
|
71
|
+
char dd;
|
|
72
|
+
char mm;
|
|
73
|
+
short yy;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
int i;
|
|
77
|
+
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
union btrTime
|
|
81
|
+
{
|
|
82
|
+
struct
|
|
83
|
+
{
|
|
84
|
+
char uu;
|
|
85
|
+
char ss;
|
|
86
|
+
char nn;
|
|
87
|
+
char hh;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
int i;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
union btrDateTime
|
|
94
|
+
{
|
|
95
|
+
struct
|
|
96
|
+
{
|
|
97
|
+
btrTime time;
|
|
98
|
+
btrDate date;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
__int64 i64;
|
|
102
|
+
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
#endif //SWIG
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
#pragma option -a
|
|
110
|
+
pragma_pop
|
|
111
|
+
|
|
112
|
+
class PACKAGE btrTimeStamp
|
|
113
|
+
{
|
|
114
|
+
|
|
115
|
+
__int64 getDateTimeInt(int& time);
|
|
116
|
+
|
|
117
|
+
public:
|
|
118
|
+
unsigned __int64 i64;
|
|
119
|
+
|
|
120
|
+
explicit btrTimeStamp(unsigned __int64 i);
|
|
121
|
+
explicit btrTimeStamp(const char* p);
|
|
122
|
+
btrTimeStamp(btrDate d, btrTime t);
|
|
123
|
+
#ifdef _WIN32
|
|
124
|
+
explicit btrTimeStamp(const wchar_t* p);
|
|
125
|
+
wchar_t* toString(wchar_t* p);
|
|
126
|
+
void fromString(const wchar_t* p);
|
|
127
|
+
#endif
|
|
128
|
+
char* toString(char* p);
|
|
129
|
+
void fromString(const char* p);
|
|
130
|
+
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
// Class bdate is for btrDate
|
|
135
|
+
|
|
136
|
+
class PACKAGE bdate
|
|
137
|
+
{
|
|
138
|
+
btrDate m_date;
|
|
139
|
+
|
|
140
|
+
public:
|
|
141
|
+
explicit bdate(int btrDate);
|
|
142
|
+
explicit bdate(const _TCHAR* date);
|
|
143
|
+
const _TCHAR* year_str();
|
|
144
|
+
const _TCHAR* month_str();
|
|
145
|
+
const _TCHAR* date_str();
|
|
146
|
+
|
|
147
|
+
int year() {return m_date.yy;};
|
|
148
|
+
|
|
149
|
+
int date() {return m_date.dd;};
|
|
150
|
+
|
|
151
|
+
int month() {return m_date.mm;};
|
|
152
|
+
|
|
153
|
+
btrDate btr_date() {return m_date;};
|
|
154
|
+
const _TCHAR* c_str();
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
PACKAGE btrDate atobtrd(const char* date);
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
PACKAGE const char* btrdtoa(const btrDate& d, char* retbuf, bool type_vb = false);
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
PACKAGE const char* btrttoa(const btrTime& t, char* retbuf, bool type_vb = false);
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
PACKAGE btrTime atobtrt(const char* p);
|
|
167
|
+
|
|
168
|
+
inline const char* btrdtoa(int date, char* retbuf, bool type_vb = false)
|
|
169
|
+
{
|
|
170
|
+
btrDate d;
|
|
171
|
+
d.i = date;
|
|
172
|
+
return btrdtoa(d, retbuf, type_vb);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
inline const char* btrttoa(int time, char* retbuf, bool type_vb = false)
|
|
176
|
+
{
|
|
177
|
+
btrTime t;
|
|
178
|
+
t.i = time;
|
|
179
|
+
return btrttoa(t, retbuf, type_vb);
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
#ifdef _WIN32
|
|
184
|
+
PACKAGE btrDate atobtrd(const wchar_t* date);
|
|
185
|
+
|
|
186
|
+
PACKAGE const wchar_t* btrdtoa(const btrDate& d, wchar_t* retbuf, bool type_vb = false);
|
|
187
|
+
|
|
188
|
+
PACKAGE const wchar_t* btrttoa(const btrTime& t, wchar_t* retbuf, bool type_vb = false);
|
|
189
|
+
|
|
190
|
+
PACKAGE btrTime atobtrt(const wchar_t* p);
|
|
191
|
+
|
|
192
|
+
inline const wchar_t* btrdtoa(int date, wchar_t* retbuf, bool type_vb = false)
|
|
193
|
+
{
|
|
194
|
+
btrDate d;
|
|
195
|
+
d.i = date;
|
|
196
|
+
return btrdtoa(d, retbuf, type_vb);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
inline const wchar_t* btrttoa(int time, wchar_t* retbuf, bool type_vb = false)
|
|
200
|
+
{
|
|
201
|
+
btrTime t;
|
|
202
|
+
t.i = time;
|
|
203
|
+
return btrttoa(t, retbuf, type_vb);
|
|
204
|
+
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
#endif
|
|
208
|
+
|
|
209
|
+
PACKAGE const _TCHAR* btrstoa(const btrDateTime& d, _TCHAR* retbuf = NULL, bool type_vb = false);
|
|
210
|
+
|
|
211
|
+
PACKAGE btrDateTime atobtrs(const _TCHAR* p);
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
inline const _TCHAR* c_str(const btrDate& d) {return btrdtoa(d, (_TCHAR*)NULL);};
|
|
215
|
+
|
|
216
|
+
inline const _TCHAR* c_str(const btrTime& d) {return btrttoa(d, (_TCHAR*)NULL);};
|
|
217
|
+
|
|
218
|
+
PACKAGE int getNowDate();
|
|
219
|
+
PACKAGE int getNowTime();
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
}// namespace tdap
|
|
223
|
+
}// namespace protocol
|
|
224
|
+
}// namespace db
|
|
225
|
+
}// namespace bzs
|
|
226
|
+
#endif//BZS_DB_PROTOCOL_TDAP_BTRDATE_H
|
|
227
|
+
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_BULKINSERT_H
|
|
2
|
+
#define BZS_DB_PROTOCOL_TDAP_CLIENT_BULKINSERT_H
|
|
3
|
+
/*=================================================================
|
|
4
|
+
Copyright (C) 2000-2013 BizStation Corp All rights reserved.
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
|
+
02111-1307, USA.
|
|
20
|
+
=================================================================*/
|
|
21
|
+
#include <bzs/db/protocol/tdap/tdapcapi.h>
|
|
22
|
+
#include <limits.h>
|
|
23
|
+
#include "nsTable.h"
|
|
24
|
+
|
|
25
|
+
namespace bzs
|
|
26
|
+
{
|
|
27
|
+
namespace db
|
|
28
|
+
{
|
|
29
|
+
namespace protocol
|
|
30
|
+
{
|
|
31
|
+
namespace tdap
|
|
32
|
+
{
|
|
33
|
+
namespace client
|
|
34
|
+
{
|
|
35
|
+
|
|
36
|
+
class bulkInsert
|
|
37
|
+
{
|
|
38
|
+
char* m_buf;
|
|
39
|
+
char* m_ptr;
|
|
40
|
+
int m_count;
|
|
41
|
+
int m_buflen;
|
|
42
|
+
int m_maxBuflen;
|
|
43
|
+
|
|
44
|
+
public:
|
|
45
|
+
bulkInsert(int max) : m_maxBuflen(max)
|
|
46
|
+
{
|
|
47
|
+
|
|
48
|
+
m_buf = new char[BULKBUFSIZE];
|
|
49
|
+
m_ptr = m_buf + sizeof(ushort_td);
|
|
50
|
+
m_count = 0;
|
|
51
|
+
m_buflen = BULKBUFSIZE;
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
~bulkInsert()
|
|
56
|
+
{
|
|
57
|
+
delete [] m_buf;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
char* reallocBuffer(char* buf, int oldsize, int newSize)
|
|
61
|
+
{
|
|
62
|
+
char* p = new char[newSize];
|
|
63
|
+
memcpy(p, buf, oldsize);
|
|
64
|
+
delete [] buf;
|
|
65
|
+
|
|
66
|
+
return p;
|
|
67
|
+
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
ushort_td insert(const char* p, ushort_td size, nstable* tb)
|
|
71
|
+
{
|
|
72
|
+
ushort_td ins_rows = 0;
|
|
73
|
+
if (m_count == (int)(USHRT_MAX - 3))
|
|
74
|
+
{
|
|
75
|
+
ins_rows = tb->commitBulkInsert(true /* auto */);
|
|
76
|
+
m_ptr = m_buf +sizeof(ushort_td);
|
|
77
|
+
m_count = 0;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// check over run. current size + need size
|
|
81
|
+
if ((m_ptr - m_buf )+ size + sizeof(ushort_td) > (uint_td)m_buflen)
|
|
82
|
+
{
|
|
83
|
+
if ((int)(m_buflen + BULKBUFSIZE) > m_maxBuflen)
|
|
84
|
+
{
|
|
85
|
+
ins_rows = tb->commitBulkInsert(true /* auto */);
|
|
86
|
+
m_ptr = m_buf +sizeof(ushort_td);
|
|
87
|
+
m_count = 0;
|
|
88
|
+
}
|
|
89
|
+
else
|
|
90
|
+
{
|
|
91
|
+
size_t pos = m_ptr - m_buf;
|
|
92
|
+
m_buf = reallocBuffer(m_buf, m_buflen, m_buflen + BULKBUFSIZE);
|
|
93
|
+
m_buflen += BULKBUFSIZE;
|
|
94
|
+
m_ptr = m_buf + pos;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
memcpy(m_ptr, &size, sizeof(ushort_td));
|
|
98
|
+
m_ptr += sizeof(ushort_td);
|
|
99
|
+
memcpy(m_ptr, p, size);
|
|
100
|
+
m_ptr += size;
|
|
101
|
+
m_count++;
|
|
102
|
+
return ins_rows;
|
|
103
|
+
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
void* data()
|
|
107
|
+
{
|
|
108
|
+
(*(ushort_td*)m_buf) = (ushort_td)m_count;
|
|
109
|
+
return m_buf;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
uint_td dataLen()
|
|
113
|
+
{
|
|
114
|
+
return (uint_td)(m_ptr - m_buf);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
int count() {return m_count;}
|
|
118
|
+
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
}//namespace client
|
|
122
|
+
}//namespace tdap
|
|
123
|
+
}//namespace protocol
|
|
124
|
+
}//namespace db
|
|
125
|
+
}//namespace bzs
|
|
126
|
+
|
|
127
|
+
#endif//BZS_DB_PROTOCOL_TDAP_CLIENT_BULKINSERT_H
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/*=================================================================
|
|
2
|
+
Copyright (C) 2012 2013 BizStation Corp All rights reserved.
|
|
3
|
+
|
|
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
|
+
|
|
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
|
+
|
|
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
|
+
#include "client.h"
|
|
20
|
+
#include "sqlBuilder.h"
|
|
21
|
+
#include "stringConverter.h"
|
|
22
|
+
|
|
23
|
+
using namespace bzs::db::protocol::tdap::client;
|
|
24
|
+
|
|
25
|
+
bzs::netsvc::client::connections* m_cons = NULL;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
namespace bzs
|
|
29
|
+
{
|
|
30
|
+
namespace db
|
|
31
|
+
{
|
|
32
|
+
namespace protocol
|
|
33
|
+
{
|
|
34
|
+
namespace tdap
|
|
35
|
+
{
|
|
36
|
+
namespace client
|
|
37
|
+
{
|
|
38
|
+
|
|
39
|
+
#if( defined(_WIN32) && defined(_MSC_VER))
|
|
40
|
+
DWORD g_tlsiID = 0;
|
|
41
|
+
#else
|
|
42
|
+
__THREAD client* __THREAD_BCB g_client=NULL;
|
|
43
|
+
#endif
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
bool client::readServerCharsetIndex()
|
|
47
|
+
{
|
|
48
|
+
if (m_charsetIndexServer == -1)
|
|
49
|
+
{
|
|
50
|
+
request req = m_req;
|
|
51
|
+
uint_td len = 256;
|
|
52
|
+
char tmp[256]={0x00};
|
|
53
|
+
req.op = TD_GETSERVER_CHARSET;
|
|
54
|
+
req.data = tmp;
|
|
55
|
+
req.datalen = &len;
|
|
56
|
+
|
|
57
|
+
mutex::scoped_lock lck(m_mutex);
|
|
58
|
+
char* p = con()->sendBuffer();
|
|
59
|
+
unsigned int size = req.serialize(p);
|
|
60
|
+
p = con()->asyncWriteRead(size);
|
|
61
|
+
req.parse(p);
|
|
62
|
+
if (req.result==0)
|
|
63
|
+
{
|
|
64
|
+
m_charsetIndexServer = mysql::charsetIndex((const char*)req.data);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
void client::addSecondCharsetData(unsigned int destCodePage, std::string& src)
|
|
73
|
+
{
|
|
74
|
+
stringConverter cv(destCodePage, CP_UTF8);
|
|
75
|
+
int osize = (int)src.size()*3;
|
|
76
|
+
char* srvchar = new char[osize];
|
|
77
|
+
|
|
78
|
+
size_t len = cv.convert(srvchar, osize, src.c_str(), src.size());
|
|
79
|
+
srvchar[len] = 0x00;
|
|
80
|
+
src += std::string("\t") + srvchar;
|
|
81
|
+
delete [] srvchar;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
bool client::buildDualChasetKeybuf()
|
|
85
|
+
{
|
|
86
|
+
if (!readServerCharsetIndex())
|
|
87
|
+
return false;
|
|
88
|
+
//m_serverCharData = std::string((char*)m_req.keybuf, m_req.keylen);
|
|
89
|
+
m_serverCharData = (char*)m_req.keybuf;
|
|
90
|
+
if (CHARSET_UTF8 != m_charsetIndexServer)
|
|
91
|
+
addSecondCharsetData(mysql::codePage(m_charsetIndexServer), m_serverCharData);
|
|
92
|
+
else
|
|
93
|
+
m_serverCharData += std::string("\t") + (char*)m_req.keybuf;
|
|
94
|
+
|
|
95
|
+
m_req.keybuf = (void_td*)m_serverCharData.c_str();
|
|
96
|
+
m_req.keylen = (keylen_td)m_serverCharData.size() + 1;
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
}//namespace client
|
|
101
|
+
}//namespace tdap
|
|
102
|
+
}//namespace protocol
|
|
103
|
+
}//namespace db
|
|
104
|
+
}//namespace bzs
|
|
105
|
+
|
|
106
|
+
|