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.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA +6 -6
  3. data/README +16 -16
  4. data/README-JA +16 -16
  5. data/bin/common/tdclc_32_2_1.dll +0 -0
  6. data/bin/common/tdclc_64_2_1.dll +0 -0
  7. data/build/common/transactd_cl_common.cmake +0 -1
  8. data/build/common/transactd_common.cmake +28 -38
  9. data/build/swig/ruby/ruby.swg +36 -30
  10. data/build/swig/ruby/tdclrb_wrap.cpp +35016 -0
  11. data/build/swig/tdcl.i +217 -62
  12. data/build/tdclc/CMakeLists.txt +14 -26
  13. data/build/tdclc/libtdclcm.map +4 -0
  14. data/build/tdclc/tdclc.cbproj +1 -1
  15. data/build/tdclc/tdclc.rc +0 -0
  16. data/build/tdclcpp/CMakeLists.txt +7 -22
  17. data/build/tdclcpp/tdclcpp.rc +0 -0
  18. data/build/tdclcpp/tdclcpp_bc.cbproj +1 -1
  19. data/build/tdclrb/CMakeLists.txt +7 -49
  20. data/build/tdclrb/tdclrb.rc +62 -0
  21. data/source/bzs/db/blobBuffer.h +5 -0
  22. data/source/bzs/db/blobStructs.h +2 -0
  23. data/source/bzs/db/engine/mysql/IReadRecords.h +9 -0
  24. data/source/bzs/db/engine/mysql/database.cpp +391 -169
  25. data/source/bzs/db/engine/mysql/database.h +178 -40
  26. data/source/bzs/db/engine/mysql/dbManager.cpp +45 -3
  27. data/source/bzs/db/engine/mysql/dbManager.h +3 -39
  28. data/source/bzs/db/engine/mysql/errorMessage.cpp +11 -7
  29. data/source/bzs/db/engine/mysql/errorMessage.h +1 -1
  30. data/source/bzs/db/engine/mysql/mydebuglog.cpp +1 -2
  31. data/source/bzs/db/engine/mysql/mysqlInternal.h +8 -8
  32. data/source/bzs/db/engine/mysql/mysqlThd.cpp +11 -0
  33. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +1 -1
  34. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +41 -6
  35. data/source/bzs/db/protocol/tdap/client/activeTable.h +177 -8
  36. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +141 -62
  37. data/source/bzs/db/protocol/tdap/client/client.cpp +39 -35
  38. data/source/bzs/db/protocol/tdap/client/client.h +52 -25
  39. data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +17 -0
  40. data/source/bzs/db/protocol/tdap/client/connectionPool.h +1 -0
  41. data/source/bzs/db/protocol/tdap/client/database.cpp +5 -1
  42. data/source/bzs/db/protocol/tdap/client/database.h +1 -1
  43. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +49 -12
  44. data/source/bzs/db/protocol/tdap/client/databaseManager.h +42 -5
  45. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +4 -2
  46. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +71 -41
  47. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +49 -49
  48. data/source/bzs/db/protocol/tdap/client/field.cpp +22 -13
  49. data/source/bzs/db/protocol/tdap/client/field.h +7 -3
  50. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +1 -1
  51. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +0 -1
  52. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +1 -0
  53. data/source/bzs/db/protocol/tdap/client/fields.h +111 -24
  54. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +1 -1
  55. data/source/bzs/db/protocol/tdap/client/filter.h +687 -310
  56. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +12 -4
  57. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +1 -1
  58. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +190 -32
  59. data/source/bzs/db/protocol/tdap/client/memRecord.h +64 -22
  60. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +4 -4
  61. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -2
  62. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +6 -3
  63. data/source/bzs/db/protocol/tdap/client/nsTable.h +1 -1
  64. data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +19 -8
  65. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +194 -87
  66. data/source/bzs/db/protocol/tdap/client/request.h +84 -26
  67. data/source/bzs/db/protocol/tdap/client/stringConverter.h +22 -12
  68. data/source/bzs/db/protocol/tdap/client/table.cpp +494 -286
  69. data/source/bzs/db/protocol/tdap/client/table.h +48 -5
  70. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +133 -87
  71. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +22 -22
  72. data/source/bzs/db/protocol/tdap/client/trdormapi.h +43 -18
  73. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +3 -3
  74. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +1 -0
  75. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +268 -74
  76. data/source/bzs/db/protocol/tdap/mysql/request.h +4 -4
  77. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +179 -43
  78. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +4 -4
  79. data/source/bzs/db/protocol/tdap/tdapRequest.h +15 -14
  80. data/source/bzs/db/protocol/tdap/tdapSchema.h +125 -90
  81. data/source/bzs/db/protocol/tdap/tdapcapi.h +46 -5
  82. data/source/bzs/db/transactd/appModule.h +1 -1
  83. data/source/bzs/db/transactd/connManager.cpp +2 -0
  84. data/source/bzs/db/transactd/transactd.cpp +1 -0
  85. data/source/bzs/env/compiler.h +10 -0
  86. data/source/bzs/env/mbcswchrLinux.cpp +42 -6
  87. data/source/bzs/env/mbcswchrLinux.h +40 -12
  88. data/source/bzs/example/queryData.cpp +33 -4
  89. data/source/bzs/netsvc/client/iconnection.h +107 -0
  90. data/source/bzs/netsvc/client/tcpClient.cpp +15 -1
  91. data/source/bzs/netsvc/client/tcpClient.h +96 -87
  92. data/source/bzs/netsvc/server/serverCpt.cpp +5 -6
  93. data/source/bzs/rtl/benchmark.cpp +2 -2
  94. data/source/bzs/rtl/stringBuffers.cpp +3 -3
  95. data/source/bzs/rtl/stringBuffers.h +2 -2
  96. data/source/bzs/test/tdclatl/bench_query_atl.js +92 -99
  97. data/source/bzs/test/tdclatl/test_query_atl.js +224 -115
  98. data/source/bzs/test/tdclphp/bench.php +126 -101
  99. data/source/bzs/test/tdclphp/transactd_Test.php +1122 -158
  100. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +12 -14
  101. data/source/bzs/test/tdclrb/transactd_spec.rb +1127 -142
  102. data/source/bzs/test/transactdBench/query_bench.cpp +32 -15
  103. data/source/bzs/test/transactdBench/scaling_bench.cpp +32 -7
  104. data/source/bzs/test/transactdBench/transactdBench.cpp +1 -1
  105. data/source/bzs/test/transactdBench/workerBase.h +46 -0
  106. data/source/bzs/test/transactdBench/workerMySQLImple.h +15 -7
  107. data/source/bzs/test/transactdBench/workerTransactdImple.h +10 -18
  108. data/source/bzs/test/trdclengn/test_trdclengn.cpp +1487 -174
  109. data/source/global/ormsrcgen/main.cpp +2 -0
  110. data/source/global/tdclatl/Database.cpp +2 -2
  111. data/source/global/tdclatl/Database.h +1 -1
  112. data/source/global/tdclatl/FieldDefs.cpp +0 -3
  113. data/source/global/tdclatl/PooledDbManager.cpp +2 -2
  114. data/source/global/tdclatl/PooledDbManager.h +1 -1
  115. data/source/global/tdclatl/PreparedQuery.cpp +53 -0
  116. data/source/global/tdclatl/PreparedQuery.h +61 -0
  117. data/source/global/tdclatl/QueryBase.cpp +2 -1
  118. data/source/global/tdclatl/QueryBase.h +1 -1
  119. data/source/global/tdclatl/Record.cpp +3 -15
  120. data/source/global/tdclatl/Recordset.cpp +15 -10
  121. data/source/global/tdclatl/Recordset.h +3 -0
  122. data/source/global/tdclatl/Table.cpp +42 -7
  123. data/source/global/tdclatl/Table.h +3 -1
  124. data/source/global/tdclatl/activeTable.cpp +264 -76
  125. data/source/global/tdclatl/activeTable.h +12 -3
  126. data/source/global/tdclatl/tdclatl.idl +92 -10
  127. data/source/linux/charsetConvert.h +7 -7
  128. data/transactd.gemspec +14 -27
  129. metadata +18 -27
  130. data/bin/common/tdclc_32_2_0.dll +0 -0
  131. data/bin/common/tdclc_64_2_0.dll +0 -0
  132. data/build/swig/php/generate.cmake.in +0 -56
  133. data/build/swig/php/generate.cmd.in +0 -47
  134. data/build/swig/php/php.swg +0 -197
  135. data/build/swig/php/transactd.no_yield.php +0 -4494
  136. data/build/swig/php/transactd.no_yield.php.git.patch +0 -685
  137. data/build/swig/php/transactd.no_yield.php.patch +0 -685
  138. data/build/swig/php/transactd.yield.php +0 -4461
  139. data/build/swig/php/transactd.yield.php.git.patch +0 -652
  140. data/build/swig/php/transactd.yield.php.patch +0 -652
  141. data/build/swig/ruby/generate.cmake.in +0 -35
  142. data/build/swig/ruby/generate.cmd.in +0 -19
  143. data/build/tdclc/BUILDNUMBER.txt +0 -1
  144. data/build/tdclcpp/BUILDNUMBER.txt +0 -1
  145. data/build/tdclrb/BUILDNUMBER.txt +0 -1
  146. 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
- #define POSBLK_SIZE 4
92
- #define CLIENTID_SIZE 2
93
- #define PARAMMASK_SIZE 2
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
- /* data image for key
340
- * param ptr address of record buffer
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 uint_td keyDataLen(const uchar_td* ptr) const
336
+ inline bool isNumericType() const
351
337
  {
352
- if ((type == ft_myblob) || (type == ft_mytext))
353
- return blobDataLen(ptr);
354
- return dataLen(ptr);
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
- /* copy key data for send to mysql
358
- * return next copy address.
346
+ /* Charctor numbers from charset.
359
347
  */
360
- inline uchar_td* keyCopy(uchar_td* to, const uchar_td* from)
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, &copylen, 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
- /* Get keyValue from keybuf for seek mode error description
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
- ushort_td keyVarlen =
388
- keyFromVarlen(); // size of var sizeByte for record.
389
- if (keyVarlen)
390
- {
391
- size = *((ushort_td*)from);
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
- inline const uchar_td* blobDataPtr(const uchar_td* ptr) const
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
- int blen = blobLenBytes();
469
- if (blen == 0)
470
- return NULL;
471
- const uchar_td** p = (const uchar_td**)(ptr + blen);
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
- /* Is string type or not.
476
- */
477
- bool isStringType() const;
478
-
479
- inline bool isNumericType() const
441
+ inline uint_td keyDataLen(const uchar_td* ptr) const
480
442
  {
481
- return ((type == ft_integer) || (type == ft_decimal) ||
482
- (type == ft_money) || (type == ft_logical) ||
483
- (type == ft_numeric) || (type == ft_bfloat) ||
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
- /* Charctor numbers from charset.
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
- unsigned int charNum() const;
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
- m_charsetIndex = index;
496
- if ((type == ft_wstring) || (type == ft_wzstring) ||
497
- (type == ft_mywvarchar) || (type == ft_mywvarbinary) ||
498
- (type == ft_mywchar))
499
- m_charsetIndex = CHARSET_UTF16LE;
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, &copylen, 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
- inline uchar_td charsetIndex() const { return m_charsetIndex; };
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 // 1023
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 "0"//##2 Build marker! Don't remove
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 "0"//##5 Build marker! Don't remove
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 0//##8 Build marker! Don't remove
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