transactd 2.4.5 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CMakeLists.txt +1 -1
- data/README-JA.md +52 -529
- data/README.md +52 -523
- data/bin/common/tdclc_32_3_0.dll +0 -0
- data/bin/common/tdclc_64_3_0.dll +0 -0
- data/build/common/system.cmake +2 -1
- data/build/common/transactd_cl_common.cmake +3 -6
- data/build/swig/ruby/ruby.swg +85 -28
- data/build/swig/ruby/tdclrb_wrap.cpp +3195 -1578
- data/build/swig/tdcl.i +161 -5
- data/build/tdclc/CMakeLists.txt +1 -0
- data/build/tdclc/tdclc.cbproj +7 -1
- data/build/tdclc/tdclc.rc +4 -4
- data/build/tdclcpp/tdclcpp.rc +4 -4
- data/build/tdclcpp/tdclcpp_bc.cbproj +2 -5
- data/build/tdclrb/tdclrb.rc +4 -4
- data/source/bzs/db/blobStructs.h +1 -1
- data/source/bzs/db/engine/mysql/database.cpp +199 -74
- data/source/bzs/db/engine/mysql/database.h +47 -18
- data/source/bzs/db/engine/mysql/dbManager.cpp +1 -0
- data/source/bzs/db/engine/mysql/mysqlInternal.h +32 -8
- data/source/bzs/db/protocol/tdap/btrDate.cpp +110 -75
- data/source/bzs/db/protocol/tdap/btrDate.h +46 -21
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +18 -18
- data/source/bzs/db/protocol/tdap/client/activeTable.h +25 -25
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +10 -4
- data/source/bzs/db/protocol/tdap/client/client.cpp +6 -5
- data/source/bzs/db/protocol/tdap/client/client.h +82 -15
- data/source/bzs/db/protocol/tdap/client/database.cpp +531 -142
- data/source/bzs/db/protocol/tdap/client/database.h +19 -6
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +461 -408
- data/source/bzs/db/protocol/tdap/client/dbDef.h +11 -17
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +61 -13
- data/source/bzs/db/protocol/tdap/client/field.cpp +1592 -1398
- data/source/bzs/db/protocol/tdap/client/field.h +110 -121
- data/source/bzs/db/protocol/tdap/client/fields.h +40 -10
- data/source/bzs/db/protocol/tdap/client/filter.h +69 -55
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +296 -164
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +77 -25
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +31 -13
- data/source/bzs/db/protocol/tdap/client/memRecord.h +31 -21
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +1 -1
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +69 -24
- data/source/bzs/db/protocol/tdap/client/nsTable.h +3 -1
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +1 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +46 -27
- data/source/bzs/db/protocol/tdap/client/request.h +2 -1
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +44 -9
- data/source/bzs/db/protocol/tdap/client/serializer.h +1 -1
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +182 -76
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +23 -12
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +8 -10
- data/source/bzs/db/protocol/tdap/client/table.cpp +172 -93
- data/source/bzs/db/protocol/tdap/client/table.h +112 -37
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +17 -0
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +0 -1
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +0 -2
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +1 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +698 -14
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +723 -307
- data/source/bzs/db/protocol/tdap/myDateTime.h +294 -0
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +164 -54
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +6 -3
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +133 -550
- data/source/bzs/db/protocol/tdap/mysql/request.h +6 -5
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +217 -82
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +1 -1
- data/source/bzs/db/protocol/tdap/tdapRequest.h +4 -9
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +808 -17
- data/source/bzs/db/protocol/tdap/tdapSchema.h +656 -164
- data/source/bzs/db/protocol/tdap/tdapcapi.h +130 -28
- data/source/bzs/db/protocol/tdap/uri.h +40 -32
- data/source/bzs/db/transactd/connManager.cpp +1 -1
- data/source/bzs/db/transactd/transactd.cpp +7 -0
- data/source/bzs/env/compiler.h +107 -94
- data/source/bzs/env/crosscompile.cpp +24 -12
- data/source/bzs/env/crosscompile.h +75 -6
- data/source/bzs/env/mbcswchrLinux.cpp +2 -2
- data/source/bzs/env/tcharMinGW.h +4 -0
- data/source/bzs/example/changeSchema.cpp +22 -17
- data/source/bzs/example/queryData.cpp +4 -0
- data/source/bzs/netsvc/client/iconnection.h +3 -1
- data/source/bzs/netsvc/client/tcpClient.h +10 -3
- data/source/bzs/rtl/stringBuffers.cpp +7 -0
- data/source/bzs/test/tdclatl/bench_query_atl.js +6 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +8 -1
- data/source/bzs/test/tdclatl/test_query_atl.js +22 -2
- data/source/bzs/test/tdclatl/test_v3.js +1017 -0
- data/source/bzs/test/tdclphp/transactd_Test.php +55 -21
- data/source/bzs/test/tdclphp/transactd_datetime_Test.php +0 -5
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +2 -0
- data/source/bzs/test/tdclphp/transactd_v3_Test.php +743 -0
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -5
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +2 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +39 -16
- data/source/bzs/test/tdclrb/transactd_v3_spec.rb +748 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +55 -58
- data/source/bzs/test/transactdBench/transactdBench2.cpp +1 -3
- data/source/bzs/test/trdclengn/testField.h +3305 -0
- data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +1050 -0
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +112 -190
- data/source/bzs/test/trdclengn/testbase.h +137 -0
- data/source/global/ormsrcgen/srcgen.cpp +23 -12
- data/source/global/ormsrcgen/template/ormDataClass_template.h +2 -0
- data/source/global/querystmts/querystmts.cpp +2 -3
- data/source/global/tdclatl/Bitset.cpp +38 -0
- data/source/global/tdclatl/Bitset.h +63 -0
- data/source/global/tdclatl/Database.cpp +59 -18
- data/source/global/tdclatl/Database.h +7 -4
- data/source/global/tdclatl/DbDef.cpp +6 -6
- data/source/global/tdclatl/DbDef.h +2 -1
- data/source/global/tdclatl/Field.cpp +112 -0
- data/source/global/tdclatl/Field.h +19 -5
- data/source/global/tdclatl/FieldDef.cpp +137 -16
- data/source/global/tdclatl/FieldDef.h +18 -2
- data/source/global/tdclatl/FieldDefs.cpp +54 -1
- data/source/global/tdclatl/FieldDefs.h +3 -0
- data/source/global/tdclatl/GroupQuery.cpp +8 -8
- data/source/global/tdclatl/QueryBase.cpp +65 -0
- data/source/global/tdclatl/QueryBase.h +10 -0
- data/source/global/tdclatl/Record.cpp +33 -2
- data/source/global/tdclatl/Record.h +3 -1
- data/source/global/tdclatl/RecordsetQuery.cpp +42 -0
- data/source/global/tdclatl/RecordsetQuery.h +8 -0
- data/source/global/tdclatl/Table.cpp +127 -3
- data/source/global/tdclatl/Table.h +10 -1
- data/source/global/tdclatl/TableDef.cpp +41 -8
- data/source/global/tdclatl/TableDef.h +7 -2
- data/source/global/tdclatl/activeTable.cpp +40 -71
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/tdclatl.idl +222 -28
- data/source/linux/tchar.h +100 -96
- data/transactd.gemspec +2 -2
- metadata +13 -11
- data/BUILD_UNIX-JA.md +0 -161
- data/BUILD_WIN-JA.md +0 -326
- data/README_ORMSRCGEN-JA.md +0 -115
- data/README_ORMSRCGEN.md +0 -118
- data/RELEASE_NOTE-JA.md +0 -356
- data/RELEASE_NOTE.md +0 -360
- data/bin/common/tdclc_32_2_4.dll +0 -0
- data/bin/common/tdclc_64_2_4.dll +0 -0
- data/source/bzs/test/trdclengn/test_blob.cpp +0 -375
@@ -248,26 +248,27 @@ inline bool cp_has_update_default_function(Field* fd)
|
|
248
248
|
inline void cp_evaluate_insert_default_function(Field* fd)
|
249
249
|
{
|
250
250
|
#if (MYSQL_VERSION_ID > 50600)
|
251
|
-
|
251
|
+
Field* ft = fd;
|
252
252
|
#else
|
253
|
-
|
253
|
+
Field_timestamp* ft = (Field_timestamp*)(fd);
|
254
254
|
#endif
|
255
|
-
|
256
|
-
|
255
|
+
if (ft)
|
256
|
+
ft->set_time();
|
257
257
|
}
|
258
258
|
|
259
259
|
inline void cp_evaluate_update_default_function(Field* fd)
|
260
260
|
{
|
261
261
|
|
262
262
|
#if (MYSQL_VERSION_ID > 50600)
|
263
|
-
|
263
|
+
Field* ft = fd;
|
264
264
|
#else
|
265
|
-
|
265
|
+
Field_timestamp* ft = (Field_timestamp*)(fd);
|
266
266
|
#endif
|
267
|
-
|
268
|
-
|
267
|
+
if (ft)
|
268
|
+
ft->set_time();
|
269
269
|
}
|
270
270
|
|
271
|
+
|
271
272
|
inline unsigned char* cp_null_ptr(Field* fd, unsigned char* /*record*/)
|
272
273
|
{
|
273
274
|
return (unsigned char*)fd->null_ptr;
|
@@ -455,6 +456,11 @@ inline bool cp_query_command(THD* thd, char* str)
|
|
455
456
|
return dispatch_command(thd, &com_data, COM_QUERY);
|
456
457
|
}
|
457
458
|
|
459
|
+
inline void cp_lex_clear(THD* thd)
|
460
|
+
{
|
461
|
+
thd->lex->reset();
|
462
|
+
}
|
463
|
+
|
458
464
|
|
459
465
|
#else //Not MySQL 5.7
|
460
466
|
#define OPEN_TABLE_FLAG_TYPE MYSQL_OPEN_GET_NEW_TABLE
|
@@ -559,6 +565,11 @@ inline bool cp_query_command(THD* thd, char* str)
|
|
559
565
|
return dispatch_command(COM_QUERY, thd, str, (uint)strlen(str));
|
560
566
|
}
|
561
567
|
|
568
|
+
inline void cp_lex_clear(THD* thd)
|
569
|
+
{
|
570
|
+
thd->lex->many_values.empty();
|
571
|
+
}
|
572
|
+
|
562
573
|
#endif
|
563
574
|
|
564
575
|
/* find_files is static function in maridb.
|
@@ -601,4 +612,17 @@ inline bool cp_query_command(THD* thd, char* str)
|
|
601
612
|
}
|
602
613
|
#endif
|
603
614
|
|
615
|
+
|
616
|
+
#if (defined(MARIADDB_10_1) && MARIADDB_10_1 > 100108)
|
617
|
+
inline void cp_setup_rpl_bitmap(TABLE* table)
|
618
|
+
{
|
619
|
+
bitmap_set_all(table->write_set);
|
620
|
+
table->rpl_write_set = table->write_set;
|
621
|
+
}
|
622
|
+
#else
|
623
|
+
|
624
|
+
inline void cp_setup_rpl_bitmap(TABLE* table){};
|
625
|
+
|
626
|
+
#endif
|
627
|
+
|
604
628
|
#endif // BZS_DB_ENGINE_MYSQL_MYSQLINTERNAL_H
|
@@ -16,13 +16,12 @@
|
|
16
16
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
17
17
|
02111-1307, USA.
|
18
18
|
=================================================================*/
|
19
|
-
#include <bzs/env/compiler.h>
|
20
|
-
#include <bzs/env/tstring.h>
|
21
19
|
#include "btrDate.h"
|
22
20
|
#include <bzs/rtl/datetime.h>
|
23
21
|
#include <stdio.h>
|
24
22
|
#include <stdlib.h>
|
25
23
|
#include <time.h>
|
24
|
+
#include <bzs/env/crosscompile.h>
|
26
25
|
|
27
26
|
#ifdef LINUX
|
28
27
|
#include <bzs/env/mbcswchrLinux.h>
|
@@ -209,99 +208,107 @@ const char* dateFormatString(const char*)
|
|
209
208
|
{
|
210
209
|
return "%04d/%02d/%02d";
|
211
210
|
}
|
212
|
-
const wchar_t* dateFormatString(const wchar_t*)
|
213
|
-
{
|
214
|
-
return L"%04d/%02d/%02d";
|
215
|
-
}
|
216
211
|
|
217
212
|
const char* dateFormatString_h(const char*)
|
218
213
|
{
|
219
214
|
return "%04d-%02d-%02d";
|
220
215
|
}
|
221
|
-
const wchar_t* dateFormatString_h(const wchar_t*)
|
222
|
-
{
|
223
|
-
return L"%04d-%02d-%02d";
|
224
|
-
}
|
225
216
|
|
226
217
|
const char* timeFormatString(const char*)
|
227
218
|
{
|
228
219
|
return "%02d:%02d:%02d";
|
229
220
|
}
|
230
|
-
const wchar_t* timeFormatString(const wchar_t*)
|
231
|
-
{
|
232
|
-
return L"%02d:%02d:%02d";
|
233
|
-
}
|
234
221
|
|
235
|
-
const char* timeFormatString_h(const char*)
|
222
|
+
/*const char* timeFormatString_h(const char*)
|
236
223
|
{
|
237
224
|
return "%02d-%02d-%02d";
|
238
|
-
}
|
239
|
-
const wchar_t* timeFormatString_h(const wchar_t*)
|
240
|
-
{
|
241
|
-
return L"%02d-%02d-%02d";
|
242
|
-
}
|
225
|
+
}*/
|
243
226
|
|
244
227
|
template <class T> size_t _tcslen_(const T* p);
|
245
228
|
|
229
|
+
template <class T> int _ttoi_(const T* p);
|
230
|
+
|
246
231
|
template <> size_t _tcslen_(const char* p)
|
247
232
|
{
|
248
233
|
return strlen(p);
|
249
234
|
}
|
250
|
-
template <> size_t _tcslen_(const wchar_t* p)
|
251
|
-
{
|
252
|
-
return wcslen(p);
|
253
|
-
}
|
254
|
-
|
255
|
-
template <class T> int _ttoi_(const T* p);
|
256
235
|
|
257
236
|
template <> int _ttoi_(const char* p)
|
258
237
|
{
|
259
238
|
return atoi(p);
|
260
239
|
}
|
261
|
-
template <> int _ttoi_(const wchar_t* p)
|
262
|
-
{
|
263
|
-
return _wtoi(p);
|
264
|
-
}
|
265
240
|
|
266
|
-
template <class T> T* formatDate(T* p, const btrDate& d, bool
|
241
|
+
template <class T> T* formatDate(T* p, const btrDate& d, bool w3_format);
|
267
242
|
|
268
|
-
template <> char* formatDate(char* p, const btrDate& d, bool
|
243
|
+
template <> char* formatDate(char* p, const btrDate& d, bool w3_format)
|
269
244
|
{
|
270
|
-
if (
|
245
|
+
if (w3_format)
|
271
246
|
sprintf_s(p, 20, dateFormatString_h(p), d.yy, d.mm, d.dd);
|
272
247
|
else
|
273
248
|
sprintf_s(p, 20, dateFormatString(p), d.yy, d.mm, d.dd);
|
274
249
|
return p;
|
275
250
|
}
|
276
251
|
|
277
|
-
template
|
252
|
+
template <class T> T* formatTime(T* p, const btrTime& t/*, bool w3_format*/);
|
253
|
+
|
254
|
+
template <> char* formatTime(char* p, const btrTime& t/*, bool w3_format*/)
|
278
255
|
{
|
279
|
-
if (
|
280
|
-
|
281
|
-
else
|
282
|
-
|
256
|
+
/*if (w3_format)
|
257
|
+
sprintf_s(p, 20, timeFormatString_h(p), t.hh, t.nn, t.ss);
|
258
|
+
else*/
|
259
|
+
sprintf_s(p, 20, timeFormatString(p), t.hh, t.nn, t.ss);
|
283
260
|
return p;
|
284
261
|
}
|
285
262
|
|
286
|
-
|
263
|
+
#ifdef _WIN32
|
264
|
+
const wchar_t* dateFormatString(const wchar_t*)
|
265
|
+
{
|
266
|
+
return L"%04d/%02d/%02d";
|
267
|
+
}
|
287
268
|
|
288
|
-
|
269
|
+
const wchar_t* dateFormatString_h(const wchar_t*)
|
289
270
|
{
|
290
|
-
|
291
|
-
|
271
|
+
return L"%04d-%02d-%02d";
|
272
|
+
}
|
273
|
+
|
274
|
+
const wchar_t* timeFormatString(const wchar_t*)
|
275
|
+
{
|
276
|
+
return L"%02d:%02d:%02d";
|
277
|
+
}
|
278
|
+
|
279
|
+
/*const wchar_t* timeFormatString_h(const wchar_t*)
|
280
|
+
{
|
281
|
+
return L"%02d-%02d-%02d";
|
282
|
+
}*/
|
283
|
+
|
284
|
+
template <> size_t _tcslen_(const wchar_t* p)
|
285
|
+
{
|
286
|
+
return wcslen(p);
|
287
|
+
}
|
288
|
+
|
289
|
+
template <> int _ttoi_(const wchar_t* p)
|
290
|
+
{
|
291
|
+
return _wtoi(p);
|
292
|
+
}
|
293
|
+
|
294
|
+
template <> wchar_t* formatDate(wchar_t* p, const btrDate& d, bool w3_format)
|
295
|
+
{
|
296
|
+
if (w3_format)
|
297
|
+
swprintf_s(p, 20, dateFormatString_h(p), d.yy, d.mm, d.dd);
|
292
298
|
else
|
293
|
-
|
299
|
+
swprintf_s(p, 20, dateFormatString(p), d.yy, d.mm, d.dd);
|
294
300
|
return p;
|
295
301
|
}
|
296
302
|
|
297
|
-
template <> wchar_t* formatTime(wchar_t* p, const btrTime& t
|
303
|
+
template <> wchar_t* formatTime(wchar_t* p, const btrTime& t/*, bool w3_format*/)
|
298
304
|
{
|
299
|
-
if (
|
305
|
+
/*if (w3_format)
|
300
306
|
swprintf_s(p, 20, timeFormatString_h(p), t.hh, t.nn, t.ss);
|
301
|
-
else
|
307
|
+
else*/
|
302
308
|
swprintf_s(p, 20, timeFormatString(p), t.hh, t.nn, t.ss);
|
303
309
|
return p;
|
304
310
|
}
|
311
|
+
#endif
|
305
312
|
|
306
313
|
template <class T> btrDate atobtrd(const T* date)
|
307
314
|
{
|
@@ -318,20 +325,20 @@ template <class T> btrDate atobtrd(const T* date)
|
|
318
325
|
return bt;
|
319
326
|
}
|
320
327
|
|
321
|
-
template <class T> const T* btrdtoa(const btrDate& d, T* retbuf, bool
|
328
|
+
template <class T> const T* btrdtoa(const btrDate& d, T* retbuf, bool w3_format)
|
322
329
|
{
|
323
330
|
T* p = retbuf;
|
324
331
|
if (p == NULL)
|
325
332
|
p = (T*)databuf();
|
326
|
-
return formatDate(p, d,
|
333
|
+
return formatDate(p, d, w3_format);
|
327
334
|
}
|
328
335
|
|
329
|
-
template <class T> const T* btrttoa(const btrTime& t, T* retbuf
|
336
|
+
template <class T> const T* btrttoa(const btrTime& t, T* retbuf/*, bool w3_format*/)
|
330
337
|
{
|
331
338
|
T* p = retbuf;
|
332
339
|
if (p == NULL)
|
333
340
|
p = (T*)databuf();
|
334
|
-
return formatTime(p, t
|
341
|
+
return formatTime(p, t/*, w3_format*/);
|
335
342
|
}
|
336
343
|
|
337
344
|
template <class T> btrTime atobtrt(const T* p)
|
@@ -354,14 +361,29 @@ btrDate atobtrd(const char* p)
|
|
354
361
|
return atobtrd<char>(p);
|
355
362
|
}
|
356
363
|
|
357
|
-
const char* btrdtoa(const btrDate& d, char* retbuf, bool
|
364
|
+
const char* btrdtoa(const btrDate& d, char* retbuf, bool w3_format)
|
365
|
+
{
|
366
|
+
return btrdtoa<char>(d, retbuf, w3_format);
|
367
|
+
}
|
368
|
+
|
369
|
+
const char* btrttoa(const btrTime& t, char* retbuf/*, bool w3_format*/)
|
358
370
|
{
|
359
|
-
return
|
371
|
+
return btrttoa<char>(t, retbuf/*, w3_format*/);
|
360
372
|
}
|
361
373
|
|
362
|
-
const char*
|
374
|
+
const char* btrstoa(const btrDateTime& s, char* retbuf, bool w3_format)
|
363
375
|
{
|
364
|
-
|
376
|
+
char* p = retbuf;
|
377
|
+
const btrDate& d = s.date;
|
378
|
+
const btrTime& t = s.time;
|
379
|
+
if (p == NULL) p = (char*)databuf();
|
380
|
+
if (w3_format)
|
381
|
+
sprintf_s(p, 21, ("%04d-%02d-%02dT%02d:%02d:%02d"), d.yy, d.mm,
|
382
|
+
d.dd, t.hh, t.nn, t.ss);
|
383
|
+
else
|
384
|
+
sprintf_s(p, 21, ("%04d/%02d/%02d %02d:%02d:%02d"), d.yy, d.mm,
|
385
|
+
d.dd, t.hh, t.nn, t.ss);
|
386
|
+
return p;
|
365
387
|
}
|
366
388
|
|
367
389
|
btrTime atobtrt(const char* p)
|
@@ -370,14 +392,29 @@ btrTime atobtrt(const char* p)
|
|
370
392
|
}
|
371
393
|
|
372
394
|
#ifdef _WIN32
|
373
|
-
const wchar_t* btrdtoa(const btrDate& d, wchar_t* retbuf, bool
|
395
|
+
const wchar_t* btrdtoa(const btrDate& d, wchar_t* retbuf, bool w3_format)
|
374
396
|
{
|
375
|
-
return btrdtoa<wchar_t>(d, retbuf,
|
397
|
+
return btrdtoa<wchar_t>(d, retbuf, w3_format);
|
376
398
|
}
|
377
399
|
|
378
|
-
const wchar_t* btrttoa(const btrTime& t, wchar_t* retbuf
|
400
|
+
const wchar_t* btrttoa(const btrTime& t, wchar_t* retbuf/*, bool w3_format*/)
|
379
401
|
{
|
380
|
-
return btrttoa<wchar_t>(t, retbuf
|
402
|
+
return btrttoa<wchar_t>(t, retbuf/*, w3_format*/);
|
403
|
+
}
|
404
|
+
|
405
|
+
const wchar_t* btrstoa(const btrDateTime& s, wchar_t* retbuf, bool w3_format)
|
406
|
+
{
|
407
|
+
wchar_t* p = retbuf;
|
408
|
+
const btrDate& d = s.date;
|
409
|
+
const btrTime& t = s.time;
|
410
|
+
if (p == NULL) p = (wchar_t*)databuf();
|
411
|
+
if (w3_format)
|
412
|
+
swprintf_s(p, 21, L"%04d-%02d-%02dT%02d:%02d:%02d", d.yy, d.mm,
|
413
|
+
d.dd, t.hh, t.nn, t.ss);
|
414
|
+
else
|
415
|
+
swprintf_s(p, 21, L"%04d/%02d/%02d %02d:%02d:%02d", d.yy, d.mm,
|
416
|
+
d.dd, t.hh, t.nn, t.ss);
|
417
|
+
return p;
|
381
418
|
}
|
382
419
|
|
383
420
|
btrDate atobtrd(const wchar_t* p)
|
@@ -392,35 +429,33 @@ btrTime atobtrt(const wchar_t* p)
|
|
392
429
|
|
393
430
|
#endif
|
394
431
|
|
395
|
-
|
432
|
+
btrDateTime atobtrs(const char* p)
|
396
433
|
{
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
if (
|
404
|
-
|
405
|
-
|
406
|
-
else
|
407
|
-
_stprintf_s(p, 21, _T("%04d/%02d/%02d %02d:%02d:%02d"), d.yy, d.mm,
|
408
|
-
d.dd, t.hh, t.nn, t.ss);
|
409
|
-
return p;
|
434
|
+
btrDateTime s;
|
435
|
+
s.i64 = 0;
|
436
|
+
s.date = atobtrd(p);
|
437
|
+
const char* tmp = strstr(p, "T");
|
438
|
+
if (tmp)
|
439
|
+
s.time = atobtrt(tmp + 1);
|
440
|
+
else if ((tmp = strstr(p, " ")) != NULL)
|
441
|
+
s.time = atobtrt(tmp + 1);
|
442
|
+
return s;
|
410
443
|
}
|
411
444
|
|
412
|
-
|
445
|
+
#ifdef _WIN32
|
446
|
+
btrDateTime atobtrs(const wchar_t* p)
|
413
447
|
{
|
414
448
|
btrDateTime s;
|
415
449
|
s.i64 = 0;
|
416
450
|
s.date = atobtrd(p);
|
417
|
-
const
|
451
|
+
const wchar_t* tmp = wcsstr(p, L"T");
|
418
452
|
if (tmp)
|
419
453
|
s.time = atobtrt(tmp + 1);
|
420
|
-
else if ((tmp =
|
454
|
+
else if ((tmp = wcsstr(p, L" ")) != NULL)
|
421
455
|
s.time = atobtrt(tmp + 1);
|
422
456
|
return s;
|
423
457
|
}
|
458
|
+
#endif
|
424
459
|
|
425
460
|
int getNowDate()
|
426
461
|
{
|
@@ -18,9 +18,10 @@
|
|
18
18
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
19
19
|
02111-1307, USA.
|
20
20
|
================================================================= */
|
21
|
-
|
21
|
+
#include <tchar.h>
|
22
|
+
#include <cstddef>
|
22
23
|
#include <bzs/env/compiler.h>
|
23
|
-
|
24
|
+
|
24
25
|
|
25
26
|
namespace bzs
|
26
27
|
{
|
@@ -151,58 +152,82 @@ public:
|
|
151
152
|
PACKAGE btrDate atobtrd(const char* date);
|
152
153
|
|
153
154
|
PACKAGE const char* btrdtoa(const btrDate& d, char* retbuf,
|
154
|
-
bool
|
155
|
+
bool w3_format = false);
|
155
156
|
|
156
|
-
PACKAGE const char* btrttoa(const btrTime& t, char* retbuf
|
157
|
-
bool
|
157
|
+
PACKAGE const char* btrttoa(const btrTime& t, char* retbuf/*,
|
158
|
+
bool w3_format = false*/);
|
158
159
|
|
159
160
|
PACKAGE btrTime atobtrt(const char* p);
|
160
161
|
|
161
|
-
|
162
|
+
PACKAGE btrDateTime atobtrs(const char* p);
|
163
|
+
|
164
|
+
PACKAGE const char* btrstoa(const btrDateTime& d, char* retbuf,
|
165
|
+
bool w3_format = false);
|
166
|
+
|
167
|
+
inline const char* btrdtoa(int date, char* retbuf, bool w3_format = false)
|
162
168
|
{
|
163
169
|
btrDate d;
|
164
170
|
d.i = date;
|
165
|
-
return btrdtoa(d, retbuf,
|
171
|
+
return btrdtoa(d, retbuf, w3_format);
|
166
172
|
}
|
167
173
|
|
168
|
-
inline const char* btrttoa(int time, char* retbuf
|
174
|
+
inline const char* btrttoa(int time, char* retbuf/*, bool w3_format = false*/)
|
169
175
|
{
|
170
176
|
btrTime t;
|
171
177
|
t.i = time;
|
172
|
-
return btrttoa(t, retbuf
|
178
|
+
return btrttoa(t, retbuf/*, w3_format*/);
|
179
|
+
}
|
180
|
+
|
181
|
+
inline const char* btrstoa(__int64 datetime, char* retbuf, bool w3_format = false)
|
182
|
+
{
|
183
|
+
btrDateTime t;
|
184
|
+
t.i64 = datetime;
|
185
|
+
return btrstoa(t, retbuf, w3_format);
|
173
186
|
}
|
174
187
|
|
188
|
+
#ifndef SWIG
|
175
189
|
#ifdef _WIN32
|
176
190
|
PACKAGE btrDate atobtrd(const wchar_t* date);
|
177
191
|
|
178
192
|
PACKAGE const wchar_t* btrdtoa(const btrDate& d, wchar_t* retbuf,
|
179
|
-
bool
|
193
|
+
bool w3_format = false);
|
180
194
|
|
181
|
-
PACKAGE const wchar_t* btrttoa(const btrTime& t, wchar_t* retbuf
|
182
|
-
bool
|
195
|
+
PACKAGE const wchar_t* btrttoa(const btrTime& t, wchar_t* retbuf/*,
|
196
|
+
bool w3_format = false*/);
|
183
197
|
|
184
198
|
PACKAGE btrTime atobtrt(const wchar_t* p);
|
185
199
|
|
186
|
-
|
200
|
+
PACKAGE btrDateTime atobtrs(const wchar_t* p);
|
201
|
+
|
202
|
+
PACKAGE const wchar_t* btrstoa(const btrDateTime& d, wchar_t* retbuf,
|
203
|
+
bool w3_format = false);
|
204
|
+
|
205
|
+
inline const wchar_t* btrdtoa(int date, wchar_t* retbuf, bool w3_format = false)
|
187
206
|
{
|
188
207
|
btrDate d;
|
189
208
|
d.i = date;
|
190
|
-
return btrdtoa(d, retbuf,
|
209
|
+
return btrdtoa(d, retbuf, w3_format);
|
191
210
|
}
|
192
211
|
|
193
|
-
inline const wchar_t* btrttoa(int time, wchar_t* retbuf
|
212
|
+
inline const wchar_t* btrttoa(int time, wchar_t* retbuf/*, bool w3_format = false*/)
|
194
213
|
{
|
195
214
|
btrTime t;
|
196
215
|
t.i = time;
|
197
|
-
return btrttoa(t, retbuf
|
216
|
+
return btrttoa(t, retbuf/*, w3_format*/);
|
198
217
|
}
|
199
218
|
|
219
|
+
inline const wchar_t* btrstoa(__int64 datetime, wchar_t* retbuf, bool w3_format = false)
|
220
|
+
{
|
221
|
+
btrDateTime t;
|
222
|
+
t.i64 = datetime;
|
223
|
+
return btrstoa(t, retbuf, w3_format);
|
224
|
+
}
|
225
|
+
|
226
|
+
#endif
|
200
227
|
#endif
|
201
228
|
|
202
|
-
PACKAGE const _TCHAR* btrstoa(const btrDateTime& d, _TCHAR* retbuf = NULL,
|
203
|
-
bool type_vb = false);
|
204
229
|
|
205
|
-
|
230
|
+
|
206
231
|
|
207
232
|
inline const _TCHAR* c_str(const btrDate& d)
|
208
233
|
{
|
@@ -214,9 +239,9 @@ inline const _TCHAR* c_str(const btrTime& d)
|
|
214
239
|
return btrttoa(d, (_TCHAR*)NULL);
|
215
240
|
}
|
216
241
|
|
217
|
-
inline const _TCHAR* c_str(const btrDateTime& d, bool
|
242
|
+
inline const _TCHAR* c_str(const btrDateTime& d, bool w3_format = false)
|
218
243
|
{
|
219
|
-
return btrstoa(d, (_TCHAR*)NULL,
|
244
|
+
return btrstoa(d, (_TCHAR*)NULL, w3_format);
|
220
245
|
}
|
221
246
|
|
222
247
|
PACKAGE int getNowDate();
|
@@ -100,7 +100,7 @@ writableRecord& activeTable::getWritableRecord()
|
|
100
100
|
return m_imple->getWritableRecord();
|
101
101
|
}
|
102
102
|
|
103
|
-
|
103
|
+
recordset& activeTable::join(recordset& rs, queryBase& q, const _TCHAR* name1,
|
104
104
|
const _TCHAR* name2, const _TCHAR* name3,
|
105
105
|
const _TCHAR* name4, const _TCHAR* name5,
|
106
106
|
const _TCHAR* name6, const _TCHAR* name7,
|
@@ -108,10 +108,10 @@ activeTable& activeTable::join(recordset& rs, queryBase& q, const _TCHAR* name1,
|
|
108
108
|
{
|
109
109
|
m_imple->join(*rs.m_imple, q, name1, name2, name3, name4, name5, name6,
|
110
110
|
name7, name8);
|
111
|
-
return
|
111
|
+
return rs;
|
112
112
|
}
|
113
113
|
|
114
|
-
|
114
|
+
recordset& activeTable::outerJoin(recordset& rs, queryBase& q,
|
115
115
|
const _TCHAR* name1, const _TCHAR* name2,
|
116
116
|
const _TCHAR* name3, const _TCHAR* name4,
|
117
117
|
const _TCHAR* name5, const _TCHAR* name6,
|
@@ -119,10 +119,10 @@ activeTable& activeTable::outerJoin(recordset& rs, queryBase& q,
|
|
119
119
|
{
|
120
120
|
m_imple->outerJoin(*rs.m_imple, q, name1, name2, name3, name4, name5, name6,
|
121
121
|
name7, name8);
|
122
|
-
return
|
122
|
+
return rs;
|
123
123
|
}
|
124
124
|
|
125
|
-
|
125
|
+
recordset& activeTable::join(recordset& rs, pq_handle& q, const _TCHAR* name1,
|
126
126
|
const _TCHAR* name2, const _TCHAR* name3,
|
127
127
|
const _TCHAR* name4, const _TCHAR* name5,
|
128
128
|
const _TCHAR* name6, const _TCHAR* name7,
|
@@ -130,10 +130,10 @@ activeTable& activeTable::join(recordset& rs, pq_handle& q, const _TCHAR* name1,
|
|
130
130
|
{
|
131
131
|
m_imple->join(*rs.m_imple, q, name1, name2, name3, name4, name5, name6,
|
132
132
|
name7, name8);
|
133
|
-
return
|
133
|
+
return rs;
|
134
134
|
}
|
135
135
|
|
136
|
-
|
136
|
+
recordset& activeTable::outerJoin(recordset& rs, pq_handle& q,
|
137
137
|
const _TCHAR* name1, const _TCHAR* name2,
|
138
138
|
const _TCHAR* name3, const _TCHAR* name4,
|
139
139
|
const _TCHAR* name5, const _TCHAR* name6,
|
@@ -141,7 +141,7 @@ activeTable& activeTable::outerJoin(recordset& rs, pq_handle& q,
|
|
141
141
|
{
|
142
142
|
m_imple->outerJoin(*rs.m_imple, q, name1, name2, name3, name4, name5, name6,
|
143
143
|
name7, name8);
|
144
|
-
return
|
144
|
+
return rs;
|
145
145
|
}
|
146
146
|
|
147
147
|
activeTable& activeTable::index(int v)
|
@@ -161,39 +161,39 @@ pq_handle activeTable::prepare(queryBase& q, bool serverPrepare)
|
|
161
161
|
return m_imple->prepare(q, serverPrepare);
|
162
162
|
}
|
163
163
|
|
164
|
-
|
164
|
+
recordset& activeTable::readMore(recordset& rs)
|
165
165
|
{
|
166
166
|
rs.clear();
|
167
167
|
m_imple->readMore(*rs.m_imple);
|
168
|
-
return
|
168
|
+
return rs;
|
169
169
|
}
|
170
170
|
|
171
|
-
|
171
|
+
recordset& activeTable::read(recordset& rs, queryBase& q)
|
172
172
|
{
|
173
173
|
rs.clear();
|
174
174
|
m_imple->read(*rs.m_imple, q);
|
175
|
-
return
|
175
|
+
return rs;
|
176
176
|
}
|
177
177
|
|
178
|
-
|
178
|
+
recordset& activeTable::read(recordset& rs, queryBase& q, validationFunc func)
|
179
179
|
{
|
180
180
|
rs.clear();
|
181
181
|
m_imple->read(*rs.m_imple, q, func);
|
182
|
-
return
|
182
|
+
return rs;
|
183
183
|
}
|
184
184
|
|
185
|
-
|
185
|
+
recordset& activeTable::read(recordset& rs, pq_handle& q)
|
186
186
|
{
|
187
187
|
rs.clear();
|
188
188
|
m_imple->read(*rs.m_imple, q);
|
189
|
-
return
|
189
|
+
return rs;
|
190
190
|
}
|
191
191
|
|
192
|
-
|
192
|
+
recordset& activeTable::read(recordset& rs, pq_handle& q, validationFunc func)
|
193
193
|
{
|
194
194
|
rs.clear();
|
195
195
|
m_imple->read(*rs.m_imple, q, func);
|
196
|
-
return
|
196
|
+
return rs;
|
197
197
|
}
|
198
198
|
|
199
199
|
activeTable* activeTable::create(idatabaseManager* mgr, const _TCHAR* tableName)
|