transactd 2.0.1 → 2.1.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 +6 -6
- data/README +16 -16
- data/README-JA +16 -16
- data/bin/common/tdclc_32_2_1.dll +0 -0
- data/bin/common/tdclc_64_2_1.dll +0 -0
- data/build/common/transactd_cl_common.cmake +0 -1
- data/build/common/transactd_common.cmake +28 -38
- data/build/swig/ruby/ruby.swg +36 -30
- data/build/swig/ruby/tdclrb_wrap.cpp +35016 -0
- data/build/swig/tdcl.i +217 -62
- data/build/tdclc/CMakeLists.txt +14 -26
- data/build/tdclc/libtdclcm.map +4 -0
- data/build/tdclc/tdclc.cbproj +1 -1
- data/build/tdclc/tdclc.rc +0 -0
- data/build/tdclcpp/CMakeLists.txt +7 -22
- data/build/tdclcpp/tdclcpp.rc +0 -0
- data/build/tdclcpp/tdclcpp_bc.cbproj +1 -1
- data/build/tdclrb/CMakeLists.txt +7 -49
- data/build/tdclrb/tdclrb.rc +62 -0
- data/source/bzs/db/blobBuffer.h +5 -0
- data/source/bzs/db/blobStructs.h +2 -0
- data/source/bzs/db/engine/mysql/IReadRecords.h +9 -0
- data/source/bzs/db/engine/mysql/database.cpp +391 -169
- data/source/bzs/db/engine/mysql/database.h +178 -40
- data/source/bzs/db/engine/mysql/dbManager.cpp +45 -3
- data/source/bzs/db/engine/mysql/dbManager.h +3 -39
- data/source/bzs/db/engine/mysql/errorMessage.cpp +11 -7
- data/source/bzs/db/engine/mysql/errorMessage.h +1 -1
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +1 -2
- data/source/bzs/db/engine/mysql/mysqlInternal.h +8 -8
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +11 -0
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +1 -1
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +41 -6
- data/source/bzs/db/protocol/tdap/client/activeTable.h +177 -8
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +141 -62
- data/source/bzs/db/protocol/tdap/client/client.cpp +39 -35
- data/source/bzs/db/protocol/tdap/client/client.h +52 -25
- data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +17 -0
- data/source/bzs/db/protocol/tdap/client/connectionPool.h +1 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +5 -1
- data/source/bzs/db/protocol/tdap/client/database.h +1 -1
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +49 -12
- data/source/bzs/db/protocol/tdap/client/databaseManager.h +42 -5
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +4 -2
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +71 -41
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +49 -49
- data/source/bzs/db/protocol/tdap/client/field.cpp +22 -13
- data/source/bzs/db/protocol/tdap/client/field.h +7 -3
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +1 -1
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +0 -1
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +1 -0
- data/source/bzs/db/protocol/tdap/client/fields.h +111 -24
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +1 -1
- data/source/bzs/db/protocol/tdap/client/filter.h +687 -310
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +12 -4
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +1 -1
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +190 -32
- data/source/bzs/db/protocol/tdap/client/memRecord.h +64 -22
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +4 -4
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -2
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +6 -3
- data/source/bzs/db/protocol/tdap/client/nsTable.h +1 -1
- data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +19 -8
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +194 -87
- data/source/bzs/db/protocol/tdap/client/request.h +84 -26
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +22 -12
- data/source/bzs/db/protocol/tdap/client/table.cpp +494 -286
- data/source/bzs/db/protocol/tdap/client/table.h +48 -5
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +133 -87
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +22 -22
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +43 -18
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +3 -3
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +1 -0
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +268 -74
- data/source/bzs/db/protocol/tdap/mysql/request.h +4 -4
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +179 -43
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +4 -4
- data/source/bzs/db/protocol/tdap/tdapRequest.h +15 -14
- data/source/bzs/db/protocol/tdap/tdapSchema.h +125 -90
- data/source/bzs/db/protocol/tdap/tdapcapi.h +46 -5
- data/source/bzs/db/transactd/appModule.h +1 -1
- data/source/bzs/db/transactd/connManager.cpp +2 -0
- data/source/bzs/db/transactd/transactd.cpp +1 -0
- data/source/bzs/env/compiler.h +10 -0
- data/source/bzs/env/mbcswchrLinux.cpp +42 -6
- data/source/bzs/env/mbcswchrLinux.h +40 -12
- data/source/bzs/example/queryData.cpp +33 -4
- data/source/bzs/netsvc/client/iconnection.h +107 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +15 -1
- data/source/bzs/netsvc/client/tcpClient.h +96 -87
- data/source/bzs/netsvc/server/serverCpt.cpp +5 -6
- data/source/bzs/rtl/benchmark.cpp +2 -2
- data/source/bzs/rtl/stringBuffers.cpp +3 -3
- data/source/bzs/rtl/stringBuffers.h +2 -2
- data/source/bzs/test/tdclatl/bench_query_atl.js +92 -99
- data/source/bzs/test/tdclatl/test_query_atl.js +224 -115
- data/source/bzs/test/tdclphp/bench.php +126 -101
- data/source/bzs/test/tdclphp/transactd_Test.php +1122 -158
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +12 -14
- data/source/bzs/test/tdclrb/transactd_spec.rb +1127 -142
- data/source/bzs/test/transactdBench/query_bench.cpp +32 -15
- data/source/bzs/test/transactdBench/scaling_bench.cpp +32 -7
- data/source/bzs/test/transactdBench/transactdBench.cpp +1 -1
- data/source/bzs/test/transactdBench/workerBase.h +46 -0
- data/source/bzs/test/transactdBench/workerMySQLImple.h +15 -7
- data/source/bzs/test/transactdBench/workerTransactdImple.h +10 -18
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +1487 -174
- data/source/global/ormsrcgen/main.cpp +2 -0
- data/source/global/tdclatl/Database.cpp +2 -2
- data/source/global/tdclatl/Database.h +1 -1
- data/source/global/tdclatl/FieldDefs.cpp +0 -3
- data/source/global/tdclatl/PooledDbManager.cpp +2 -2
- data/source/global/tdclatl/PooledDbManager.h +1 -1
- data/source/global/tdclatl/PreparedQuery.cpp +53 -0
- data/source/global/tdclatl/PreparedQuery.h +61 -0
- data/source/global/tdclatl/QueryBase.cpp +2 -1
- data/source/global/tdclatl/QueryBase.h +1 -1
- data/source/global/tdclatl/Record.cpp +3 -15
- data/source/global/tdclatl/Recordset.cpp +15 -10
- data/source/global/tdclatl/Recordset.h +3 -0
- data/source/global/tdclatl/Table.cpp +42 -7
- data/source/global/tdclatl/Table.h +3 -1
- data/source/global/tdclatl/activeTable.cpp +264 -76
- data/source/global/tdclatl/activeTable.h +12 -3
- data/source/global/tdclatl/tdclatl.idl +92 -10
- data/source/linux/charsetConvert.h +7 -7
- data/transactd.gemspec +14 -27
- metadata +18 -27
- data/bin/common/tdclc_32_2_0.dll +0 -0
- data/bin/common/tdclc_64_2_0.dll +0 -0
- data/build/swig/php/generate.cmake.in +0 -56
- data/build/swig/php/generate.cmd.in +0 -47
- data/build/swig/php/php.swg +0 -197
- data/build/swig/php/transactd.no_yield.php +0 -4494
- data/build/swig/php/transactd.no_yield.php.git.patch +0 -685
- data/build/swig/php/transactd.no_yield.php.patch +0 -685
- data/build/swig/php/transactd.yield.php +0 -4461
- data/build/swig/php/transactd.yield.php.git.patch +0 -652
- data/build/swig/php/transactd.yield.php.patch +0 -652
- data/build/swig/ruby/generate.cmake.in +0 -35
- data/build/swig/ruby/generate.cmd.in +0 -19
- data/build/tdclc/BUILDNUMBER.txt +0 -1
- data/build/tdclcpp/BUILDNUMBER.txt +0 -1
- data/build/tdclrb/BUILDNUMBER.txt +0 -1
- data/build/tdclrb/GEM_RELEASE_VERSION +0 -1
|
@@ -59,13 +59,13 @@ class dbExecuter : public engine::mysql::dbManager
|
|
|
59
59
|
std::string makeSQLcreateTable(const request& req);
|
|
60
60
|
inline void doCreateTable(request& req);
|
|
61
61
|
inline void doOpenTable(request& req);
|
|
62
|
-
inline void doSeekKey(request& req, int op);
|
|
63
|
-
inline void doMoveFirst(request& req);
|
|
64
|
-
inline void doMoveKey(request& req, int op);
|
|
62
|
+
inline void doSeekKey(request& req, int op, engine::mysql::rowLockMode* lock);
|
|
63
|
+
inline void doMoveFirst(request& req, engine::mysql::rowLockMode* lock);
|
|
64
|
+
inline void doMoveKey(request& req, int op, engine::mysql::rowLockMode* lock);
|
|
65
65
|
inline int doReadMultiWithSeek(request& req, int op,
|
|
66
66
|
netsvc::server::netWriter* nw);
|
|
67
67
|
inline int doReadMulti(request& req, int op, netsvc::server::netWriter* nw);
|
|
68
|
-
inline void doStepRead(request& req, int op);
|
|
68
|
+
inline void doStepRead(request& req, int op, engine::mysql::rowLockMode* lock);
|
|
69
69
|
|
|
70
70
|
inline void doInsert(request& req);
|
|
71
71
|
inline void doUpdate(request& req);
|
|
@@ -43,6 +43,7 @@ namespace protocol
|
|
|
43
43
|
{
|
|
44
44
|
namespace tdap
|
|
45
45
|
{
|
|
46
|
+
namespace client {class table;}
|
|
46
47
|
|
|
47
48
|
#define P_MASK_OP 0
|
|
48
49
|
#define P_MASK_POSBLK 1
|
|
@@ -75,22 +76,20 @@ namespace tdap
|
|
|
75
76
|
P_MASK_POSBLK | P_MASK_DATA | P_MASK_DATALEN | P_MASK_KEYBUF
|
|
76
77
|
#define P_MASK_INS_AUTOINC P_MASK_MOVPOS
|
|
77
78
|
|
|
78
|
-
struct req1
|
|
79
|
-
{
|
|
80
|
-
ushort_td op;
|
|
81
|
-
void_td* keybuf;
|
|
82
|
-
uchar_td keylen;
|
|
83
|
-
short_td keyNum;
|
|
84
|
-
|
|
85
|
-
void write(std::ostream& ost);
|
|
86
|
-
};
|
|
87
|
-
|
|
88
79
|
#pragma pack(push, 1)
|
|
89
80
|
pragma_pack1;
|
|
90
81
|
|
|
91
|
-
|
|
92
|
-
#define CLIENTID_SIZE
|
|
93
|
-
#define PARAMMASK_SIZE
|
|
82
|
+
|
|
83
|
+
#define CLIENTID_SIZE 2
|
|
84
|
+
#define PARAMMASK_SIZE 2
|
|
85
|
+
#define TD_POSBLK_TRANSMIT_SIZE 4
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
/** tdap bosblk
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
/* Dynamic data buffer alloc for client */
|
|
92
|
+
typedef void*(__STDCALL* DDBA_PTR)(client::table* tb, uint_td size);
|
|
94
93
|
|
|
95
94
|
/** tdap version info struct
|
|
96
95
|
*/
|
|
@@ -106,7 +105,9 @@ struct posblk
|
|
|
106
105
|
{
|
|
107
106
|
posblk() { memset(this, 0, sizeof(posblk)); }
|
|
108
107
|
|
|
109
|
-
int handle;
|
|
108
|
+
unsigned int handle;
|
|
109
|
+
client::table* tb;
|
|
110
|
+
DDBA_PTR allocFunc;
|
|
110
111
|
};
|
|
111
112
|
|
|
112
113
|
struct clientID
|
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
#include <bzs/env/compiler.h>
|
|
27
27
|
#include <bzs/env/crosscompile.h>
|
|
28
28
|
#include <bzs/db/protocol/tdap/mysql/characterset.h>
|
|
29
|
+
#include <bzs/db/blobStructs.h>
|
|
30
|
+
#include <assert.h>
|
|
29
31
|
|
|
30
32
|
namespace bzs
|
|
31
33
|
{
|
|
@@ -321,84 +323,41 @@ private:
|
|
|
321
323
|
*/
|
|
322
324
|
inline ushort_td maxKeylen() const { return keylen ? keylen : len; };
|
|
323
325
|
|
|
324
|
-
inline ushort_td keyFromVarlen() const
|
|
325
|
-
{
|
|
326
|
-
if ((type >= ft_myvarchar) && (type <= ft_mywvarbinary))
|
|
327
|
-
return len < 256 ? 1 : 2;
|
|
328
|
-
else if ((type == ft_myblob) || (type == ft_mytext))
|
|
329
|
-
return len - 8;
|
|
330
|
-
return 0;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
326
|
public:
|
|
334
327
|
inline unsigned int codePage() const
|
|
335
328
|
{
|
|
336
329
|
return mysql::codePage((unsigned short)m_charsetIndex);
|
|
337
330
|
}
|
|
338
331
|
|
|
339
|
-
/*
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
inline const uchar_td* keyData(const uchar_td* ptr) const
|
|
343
|
-
{
|
|
344
|
-
if ((type == ft_myblob) || (type == ft_mytext))
|
|
345
|
-
return blobDataPtr(ptr);
|
|
346
|
-
int sizeByte = varLenBytes();
|
|
347
|
-
return ptr + sizeByte;
|
|
348
|
-
}
|
|
332
|
+
/* Is string type or not.
|
|
333
|
+
*/
|
|
334
|
+
bool isStringType() const;
|
|
349
335
|
|
|
350
|
-
inline
|
|
336
|
+
inline bool isNumericType() const
|
|
351
337
|
{
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
338
|
+
return ((type == ft_integer) || (type == ft_decimal) ||
|
|
339
|
+
(type == ft_money) || (type == ft_logical) ||
|
|
340
|
+
(type == ft_numeric) || (type == ft_bfloat) ||
|
|
341
|
+
(type == ft_uinteger) || (type == ft_autoinc) ||
|
|
342
|
+
(type == ft_bit) || (type == ft_numericsts) ||
|
|
343
|
+
(type == ft_numericsa) || (type == ft_autoIncUnsigned));
|
|
355
344
|
}
|
|
356
345
|
|
|
357
|
-
/*
|
|
358
|
-
* return next copy address.
|
|
346
|
+
/* Charctor numbers from charset.
|
|
359
347
|
*/
|
|
360
|
-
|
|
361
|
-
{
|
|
362
|
-
|
|
363
|
-
ushort_td kl = maxKeylen(); // size of max key segmnet for mysql
|
|
364
|
-
ushort_td copylen = kl;
|
|
365
|
-
memset(to, 0x00, kl);
|
|
366
|
-
ushort_td keyVarlen =
|
|
367
|
-
keyFromVarlen(); // size of var sizeByte for record.
|
|
368
|
-
if (keyVarlen)
|
|
369
|
-
{
|
|
370
|
-
copylen = (ushort_td)std::min<uint_td>((uint_td)copylen,
|
|
371
|
-
keyDataLen(from));
|
|
372
|
-
memcpy(to, ©len, 2);
|
|
373
|
-
to += 2;
|
|
374
|
-
from = keyData(from);
|
|
375
|
-
}
|
|
376
|
-
memcpy(to, from, copylen);
|
|
377
|
-
return to + kl - keyVarlen;
|
|
378
|
-
}
|
|
348
|
+
unsigned int charNum() const;
|
|
379
349
|
|
|
380
|
-
|
|
381
|
-
* return next copy key address.
|
|
382
|
-
*/
|
|
383
|
-
inline const uchar_td* getKeyValueFromKeybuf(const uchar_td* from,
|
|
384
|
-
const uchar_td** data,
|
|
385
|
-
ushort_td& size)
|
|
350
|
+
inline void setCharsetIndex(uchar_td index)
|
|
386
351
|
{
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
*data = from + 2;
|
|
393
|
-
}
|
|
394
|
-
else
|
|
395
|
-
{
|
|
396
|
-
size = maxKeylen();
|
|
397
|
-
*data = from;
|
|
398
|
-
}
|
|
399
|
-
return *data + size;
|
|
352
|
+
m_charsetIndex = index;
|
|
353
|
+
if ((type == ft_wstring) || (type == ft_wzstring) ||
|
|
354
|
+
(type == ft_mywvarchar) || (type == ft_mywvarbinary) ||
|
|
355
|
+
(type == ft_mywchar))
|
|
356
|
+
m_charsetIndex = CHARSET_UTF16LE;
|
|
400
357
|
}
|
|
401
358
|
|
|
359
|
+
inline uchar_td charsetIndex() const { return m_charsetIndex; };
|
|
360
|
+
|
|
402
361
|
/* length bytes of var field
|
|
403
362
|
*/
|
|
404
363
|
inline int varLenBytes() const
|
|
@@ -416,6 +375,11 @@ public:
|
|
|
416
375
|
return 0;
|
|
417
376
|
}
|
|
418
377
|
|
|
378
|
+
inline bool isBlob() const
|
|
379
|
+
{
|
|
380
|
+
return (type == ft_myblob) || (type == ft_mytext);
|
|
381
|
+
}
|
|
382
|
+
|
|
419
383
|
inline int maxVarDatalen() const
|
|
420
384
|
{
|
|
421
385
|
if (((type >= ft_myvarchar) && (type <= ft_mywvarbinary)) ||
|
|
@@ -463,43 +427,62 @@ public:
|
|
|
463
427
|
return v;
|
|
464
428
|
}
|
|
465
429
|
|
|
466
|
-
|
|
430
|
+
/* data image for key
|
|
431
|
+
* param ptr address of record buffer
|
|
432
|
+
*/
|
|
433
|
+
inline const uchar_td* keyData(const uchar_td* ptr) const
|
|
467
434
|
{
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
return *p;
|
|
435
|
+
if ((type == ft_myblob) || (type == ft_mytext))
|
|
436
|
+
return blobDataPtr(ptr);
|
|
437
|
+
int sizeByte = varLenBytes();
|
|
438
|
+
return ptr + sizeByte;
|
|
473
439
|
}
|
|
474
440
|
|
|
475
|
-
|
|
476
|
-
*/
|
|
477
|
-
bool isStringType() const;
|
|
478
|
-
|
|
479
|
-
inline bool isNumericType() const
|
|
441
|
+
inline uint_td keyDataLen(const uchar_td* ptr) const
|
|
480
442
|
{
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
(type == ft_uinteger) || (type == ft_autoinc) ||
|
|
485
|
-
(type == ft_bit) || (type == ft_numericsts) ||
|
|
486
|
-
(type == ft_numericsa) || (type == ft_autoIncUnsigned));
|
|
443
|
+
if ((type == ft_myblob) || (type == ft_mytext))
|
|
444
|
+
return blobDataLen(ptr);
|
|
445
|
+
return dataLen(ptr);
|
|
487
446
|
}
|
|
488
447
|
|
|
489
|
-
|
|
448
|
+
/** @cond INTERNAL */
|
|
449
|
+
/* copy key data for send to mysql
|
|
450
|
+
* return next copy address.
|
|
451
|
+
* If datalen==0xff then From is field formated (string) type.
|
|
452
|
+
* If datalen!=0xff then From is none field formated (string) type.
|
|
490
453
|
*/
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
inline void setCharsetIndex(uchar_td index)
|
|
454
|
+
inline uchar_td* keyCopy(uchar_td* to, const uchar_td* from, ushort_td datalen=0xff)
|
|
494
455
|
{
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
456
|
+
|
|
457
|
+
ushort_td kl = maxKeylen(); // size of max key segmnet for mysql
|
|
458
|
+
memset(to, 0x00, kl);
|
|
459
|
+
ushort_td keyVarlen =
|
|
460
|
+
varLenByteForKey(); // size of var sizeByte for record.
|
|
461
|
+
ushort_td copylen = std::min<ushort_td>(kl, datalen);
|
|
462
|
+
if (keyVarlen)
|
|
463
|
+
{
|
|
464
|
+
if (datalen==0xff)
|
|
465
|
+
copylen = (ushort_td)std::min<uint_td>((uint_td)copylen,
|
|
466
|
+
keyDataLen(from));
|
|
467
|
+
// Var size is allways 2byte for key.
|
|
468
|
+
memcpy(to, ©len, 2);
|
|
469
|
+
to += 2;
|
|
470
|
+
if (datalen==0xff)
|
|
471
|
+
from = keyData(from);
|
|
472
|
+
}
|
|
473
|
+
memcpy(to, from, copylen);
|
|
474
|
+
return to + kl - keyVarlen;// incremnt 2 + (store_len - varlen)
|
|
500
475
|
}
|
|
501
476
|
|
|
502
|
-
|
|
477
|
+
|
|
478
|
+
inline const uchar_td* blobDataPtr(const uchar_td* ptr) const
|
|
479
|
+
{
|
|
480
|
+
int blen = blobLenBytes();
|
|
481
|
+
if (blen == 0)
|
|
482
|
+
return NULL;
|
|
483
|
+
const uchar_td** p = (const uchar_td**)(ptr + blen);
|
|
484
|
+
return *p;
|
|
485
|
+
}
|
|
503
486
|
|
|
504
487
|
inline uint_td unPackCopy(uchar_td* dest, const uchar_td* src) const
|
|
505
488
|
{
|
|
@@ -513,6 +496,58 @@ public:
|
|
|
513
496
|
memcpy(dest, src, clen);
|
|
514
497
|
return clen;
|
|
515
498
|
}
|
|
499
|
+
|
|
500
|
+
inline ushort_td varLenByteForKey() const
|
|
501
|
+
{
|
|
502
|
+
if (((type >= ft_myvarchar) && (type <= ft_mywvarbinary)) ||
|
|
503
|
+
(type == ft_lstring))
|
|
504
|
+
return len < 256 ? 1 : 2;
|
|
505
|
+
else if ((type == ft_myblob) || (type == ft_mytext))
|
|
506
|
+
return len - 8;
|
|
507
|
+
return 0;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
/* Get keyValue from keybuf for seek mode error description
|
|
511
|
+
* return next copy key address.
|
|
512
|
+
*/
|
|
513
|
+
inline const uchar_td* getKeyValueFromKeybuf(const uchar_td* from,
|
|
514
|
+
const uchar_td** data,
|
|
515
|
+
ushort_td& size)
|
|
516
|
+
{
|
|
517
|
+
ushort_td keyVarlen =
|
|
518
|
+
varLenByteForKey(); // size of var sizeByte for record.
|
|
519
|
+
if (keyVarlen)
|
|
520
|
+
{
|
|
521
|
+
size = *((ushort_td*)from);
|
|
522
|
+
*data = from + 2;
|
|
523
|
+
}
|
|
524
|
+
else
|
|
525
|
+
{
|
|
526
|
+
size = maxKeylen();
|
|
527
|
+
*data = from;
|
|
528
|
+
}
|
|
529
|
+
return *data + size;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
inline unsigned char* setBlobFieldPointer(uchar_td* dest, const blobHeader* hd,
|
|
533
|
+
unsigned char* blobBlock, int fieldNum) const
|
|
534
|
+
{
|
|
535
|
+
assert(hd->curRow < hd->rows);
|
|
536
|
+
const blobField* f = hd->nextField;
|
|
537
|
+
int sizeByte = blobLenBytes();
|
|
538
|
+
unsigned int size = f->size;
|
|
539
|
+
//Copy data size
|
|
540
|
+
memcpy(dest, &size, sizeByte);
|
|
541
|
+
//Copy data
|
|
542
|
+
memcpy(blobBlock, f->data(), size);
|
|
543
|
+
//Copy data ptr
|
|
544
|
+
memcpy(dest + sizeByte, &blobBlock, sizeof(char*));
|
|
545
|
+
hd->nextField = (blobField*)f->next();
|
|
546
|
+
if (fieldNum == hd->fieldCount - 1)
|
|
547
|
+
++hd->curRow;
|
|
548
|
+
return blobBlock + size;
|
|
549
|
+
}
|
|
550
|
+
/** @endcond */
|
|
516
551
|
};
|
|
517
552
|
|
|
518
553
|
namespace client
|
|
@@ -65,8 +65,11 @@ typedef short_td(__STDCALL* DLLUNLOADCALLBACK_PTR)(dllUnloadCallback func);
|
|
|
65
65
|
*/
|
|
66
66
|
#define POS_BLOCK_SIZE 128
|
|
67
67
|
#ifndef MAX_KEYLEN
|
|
68
|
-
#define MAX_KEYLEN 0X3FF
|
|
68
|
+
#define MAX_KEYLEN 0X3FF // 1023
|
|
69
69
|
#endif
|
|
70
|
+
#define BTRV_MAX_DATA_SIZE 57000
|
|
71
|
+
#define TDAP_MAX_DATA_SIZE 6291456 // 3Mbyte
|
|
72
|
+
#define BOOKMARK_ALLOC_SIZE 40960
|
|
70
73
|
|
|
71
74
|
/** operation type
|
|
72
75
|
*
|
|
@@ -130,6 +133,7 @@ typedef short_td(__STDCALL* DLLUNLOADCALLBACK_PTR)(dllUnloadCallback func);
|
|
|
130
133
|
#define TD_REC_DELLETEATKEY 71
|
|
131
134
|
#define TD_KEY_GE_NEXT_MULTI 72
|
|
132
135
|
#define TD_KEY_LE_PREV_MULTI 73
|
|
136
|
+
#define TD_FILTER_PREPARE 74
|
|
133
137
|
#define TD_CONNECT 78
|
|
134
138
|
#define TD_BEGIN_SHAPSHOT 88
|
|
135
139
|
#define TD_END_SNAPSHOT 89
|
|
@@ -249,13 +253,35 @@ typedef short_td(__STDCALL* DLLUNLOADCALLBACK_PTR)(dllUnloadCallback func);
|
|
|
249
253
|
|
|
250
254
|
#define NOWAIT_WRITE 500
|
|
251
255
|
#define PARALLEL_TRN 1000
|
|
252
|
-
|
|
256
|
+
#define TRN_ISO_READ_COMMITED 0
|
|
257
|
+
#define TRN_ISO_REPEATABLE_READ 2000
|
|
258
|
+
#define TRN_ISO_SERIALIZABLE 3000
|
|
259
|
+
|
|
260
|
+
#define SINGLELOCK_READ_COMMITED LOCK_SINGLE_NOWAIT + PARALLEL_TRN
|
|
261
|
+
#define MULTILOCK_READ_COMMITED LOCK_MULTI_NOWAIT + PARALLEL_TRN
|
|
262
|
+
#define MULTILOCK_REPEATABLE_READ TRN_ISO_REPEATABLE_READ + LOCK_MULTI_NOWAIT
|
|
263
|
+
#define MULTILOCK_ISO_SERIALIZABLE TRN_ISO_SERIALIZABLE + LOCK_MULTI_NOWAIT
|
|
264
|
+
|
|
265
|
+
/** InnoDB or transactional engin lock options
|
|
266
|
+
*/
|
|
267
|
+
// Transaction
|
|
268
|
+
#define SINGLELOCK_NOGAP SINGLELOCK_READ_COMMITED
|
|
269
|
+
#define MULTILOCK_NOGAP MULTILOCK_READ_COMMITED
|
|
270
|
+
#define MULTILOCK_GAP MULTILOCK_REPEATABLE_READ + LOCK_MULTI_NOWAIT
|
|
271
|
+
// Snapshot
|
|
272
|
+
#define CONSISTENT_READ 4000
|
|
273
|
+
#define MULTILOCK_GAP_SHARE TRN_ISO_REPEATABLE_READ
|
|
274
|
+
#define MULTILOCK_NOGAP_SHARE 0
|
|
275
|
+
// Read row lock
|
|
276
|
+
#define ROW_LOCK_X LOCK_SINGLE_NOWAIT
|
|
277
|
+
#define ROW_LOCK_S 5000 + LOCK_SINGLE_NOWAIT
|
|
253
278
|
|
|
254
279
|
/** open mode
|
|
255
280
|
*/
|
|
256
281
|
#define TD_OPEN_NORMAL 0
|
|
257
282
|
#define TD_OPEN_READONLY -2
|
|
258
283
|
#define TD_OPEN_EXCLUSIVE -4
|
|
284
|
+
#define TD_OPEN_READONLY_EXCLUSIVE (TD_OPEN_READONLY + TD_OPEN_EXCLUSIVE)
|
|
259
285
|
|
|
260
286
|
/** filed algin
|
|
261
287
|
*/
|
|
@@ -325,12 +351,15 @@ typedef short_td(__STDCALL* DLLUNLOADCALLBACK_PTR)(dllUnloadCallback func);
|
|
|
325
351
|
#define STATUS_TABLE_EXISTS_ERROR 59
|
|
326
352
|
#define STATUS_LIMMIT_OF_REJECT 60
|
|
327
353
|
#define STATUS_WARKSPACE_TOO_SMALL 61
|
|
354
|
+
#define STATUS_INVALID_EX_DESC 62
|
|
355
|
+
#define STATUS_INVALID_EX_INS 63
|
|
328
356
|
#define STATUS_REACHED_FILTER_COND 64
|
|
329
357
|
#define STATUS_INVALID_FIELD_OFFSET 65
|
|
330
358
|
#define STATUS_CHANGE_CONFLICT 80
|
|
331
359
|
#define STATUS_INVALID_LOCKTYPE 83
|
|
332
360
|
#define STATUS_LOCK_ERROR 84
|
|
333
361
|
#define STATUS_FILE_LOCKED 85
|
|
362
|
+
#define STATUS_INVALID_SUPPLYVALUES 86
|
|
334
363
|
#define STATUS_CANNOT_LOCK_TABLE 88
|
|
335
364
|
#define STATUS_INVALID_KEYNAME STATUS_INVALID_KEYNUM
|
|
336
365
|
#define STATUS_INVALID_DATASIZE STATUS_BUFFERTOOSMALL
|
|
@@ -339,6 +368,10 @@ typedef short_td(__STDCALL* DLLUNLOADCALLBACK_PTR)(dllUnloadCallback func);
|
|
|
339
368
|
#define ERROR_NOSPECIFY_TABLE 176
|
|
340
369
|
#define ERROR_LOAD_CLIBRARY 200
|
|
341
370
|
#define ERROR_INDEX_RND_INIT 201
|
|
371
|
+
#define STATUS_INVALID_PREPAREID 202
|
|
372
|
+
#define STATUS_LMIT_OF_PREPAREED 203
|
|
373
|
+
#define STATUS_ALREADY_INSNAPSHOT 204
|
|
374
|
+
#define STATUS_ALREADY_INTRANSACTION 205
|
|
342
375
|
#define SERVER_CLIENT_NOT_COMPATIBLE 3003
|
|
343
376
|
#define NET_BAD_SRB_FORMAT 3021
|
|
344
377
|
#define ERROR_TD_HOSTNAME_NOT_FOUND 3103
|
|
@@ -352,6 +385,14 @@ typedef short_td(__STDCALL* DLLUNLOADCALLBACK_PTR)(dllUnloadCallback func);
|
|
|
352
385
|
#define FILTER_CURRENT_TYPE_NOTINC 0
|
|
353
386
|
#define FILTER_CURRENT_TYPE_INC 1
|
|
354
387
|
#define FILTER_CURRENT_TYPE_NOBOOKMARK 2
|
|
388
|
+
#define FILTER_TYPE_SUPPLYVALUE 4
|
|
389
|
+
#define FILTER_TYPE_FORWORD 4 //at preparing only
|
|
390
|
+
#define FILTER_TYPE_SEEKS 8
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
/* No need export for client */
|
|
394
|
+
#define FILTER_COMBINE_NOPREPARE 0
|
|
395
|
+
#define FILTER_COMBINE_PREPARE 32
|
|
355
396
|
|
|
356
397
|
|
|
357
398
|
#define NIS_FILED_NAME "$nf"
|
|
@@ -385,7 +426,7 @@ struct trdVersiton
|
|
|
385
426
|
If you change this version then you need change The ($TargetName) project options too.
|
|
386
427
|
*/
|
|
387
428
|
#define C_INTERFACE_VER_MAJOR "2"//##1 Build marker! Don't remove
|
|
388
|
-
#define C_INTERFACE_VER_MINOR "
|
|
429
|
+
#define C_INTERFACE_VER_MINOR "1"//##2 Build marker! Don't remove
|
|
389
430
|
#define C_INTERFACE_VER_RELEASE "0"//##3 Build marker! Don't remove
|
|
390
431
|
|
|
391
432
|
/* dnamic load library name.
|
|
@@ -449,7 +490,7 @@ struct trdVersiton
|
|
|
449
490
|
*/
|
|
450
491
|
|
|
451
492
|
#define CPP_INTERFACE_VER_MAJOR "2"//##4 Build marker! Don't remove
|
|
452
|
-
#define CPP_INTERFACE_VER_MINOR "
|
|
493
|
+
#define CPP_INTERFACE_VER_MINOR "1"//##5 Build marker! Don't remove
|
|
453
494
|
#define CPP_INTERFACE_VER_RELEASE "0"//##6 Build marker! Don't remove
|
|
454
495
|
|
|
455
496
|
/* use autolink tdclcpp */
|
|
@@ -466,7 +507,7 @@ struct trdVersiton
|
|
|
466
507
|
#endif
|
|
467
508
|
|
|
468
509
|
#define TRANSACTD_VER_MAJOR 2//##7 Build marker! Don't remove
|
|
469
|
-
#define TRANSACTD_VER_MINOR
|
|
510
|
+
#define TRANSACTD_VER_MINOR 1//##8 Build marker! Don't remove
|
|
470
511
|
#define TRANSACTD_VER_RELEASE 0//##9 Build marker! Don't remove
|
|
471
512
|
|
|
472
513
|
#endif // BZS_DB_PROTOCOL_TDAP_TDAPCAPI_H
|