transactd 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CMakeLists.txt +37 -4
  3. data/bin/common/tdclc_32_1_2.dll +0 -0
  4. data/bin/common/tdclc_64_1_2.dll +0 -0
  5. data/build/common/transactd_cl_common.cmake +0 -1
  6. data/build/common/transactd_common.cmake +26 -6
  7. data/build/swig/php/generate.cmake.in +58 -0
  8. data/build/swig/php/generate.cmd.in +41 -0
  9. data/build/swig/php/php.swg +155 -0
  10. data/build/swig/ruby/ruby.swg +38 -0
  11. data/build/swig/tdcl.i +133 -3
  12. data/build/tdclc/CMakeLists.txt +4 -1
  13. data/build/tdclc/tdclc_32.cbproj +1 -1
  14. data/build/tdclc/tdclc_64.cbproj +1 -1
  15. data/build/tdclcpp/CMakeLists.txt +1 -1
  16. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +1 -4
  17. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +0 -3
  18. data/build/tdclrb/CMakeLists.txt +1 -1
  19. data/build/tdclrb/GEM_VERSION +2 -2
  20. data/source/bzs/db/engine/mysql/IReadRecords.h +1 -1
  21. data/source/bzs/db/engine/mysql/bookmark.h +3 -3
  22. data/source/bzs/db/engine/mysql/database.cpp +95 -19
  23. data/source/bzs/db/engine/mysql/database.h +6 -6
  24. data/source/bzs/db/engine/mysql/mysqlInternal.h +43 -1
  25. data/source/bzs/db/engine/mysql/mysqlThd.cpp +10 -8
  26. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +1 -1
  27. data/source/bzs/db/protocol/tdap/btrDate.h +2 -2
  28. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +15 -8
  29. data/source/bzs/db/protocol/tdap/client/dbDef.h +2 -2
  30. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +4 -0
  31. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +0 -5
  32. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +0 -4
  33. data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -484
  34. data/source/bzs/db/protocol/tdap/client/filter.h +696 -84
  35. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +13 -3
  36. data/source/bzs/db/protocol/tdap/client/nsTable.h +12 -6
  37. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +2 -1
  38. data/source/bzs/db/protocol/tdap/client/stringConverter.h +1 -0
  39. data/source/bzs/db/protocol/tdap/client/table.cpp +519 -75
  40. data/source/bzs/db/protocol/tdap/client/table.h +49 -7
  41. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +145 -124
  42. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +39 -0
  43. data/source/bzs/db/protocol/tdap/client/trdormapi.h +872 -0
  44. data/source/bzs/db/protocol/tdap/myDateTime.cpp +8 -8
  45. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +7 -9
  46. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +406 -195
  47. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +64 -13
  48. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +2 -1
  49. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +35 -3
  50. data/source/bzs/db/protocol/tdap/tdapSchema.h +11 -3
  51. data/source/bzs/db/protocol/tdap/tdapcapi.h +63 -53
  52. data/source/bzs/env/crosscompile.h +8 -3
  53. data/source/bzs/example/connection_pool_c.cpp +1 -7
  54. data/source/bzs/example/useORM.cpp +585 -0
  55. data/source/bzs/rtl/exception.h +6 -0
  56. data/source/bzs/test/tdclatl/bench_tdclatl.js +12 -7
  57. data/source/bzs/test/tdclphp/transactd_Test.php +1845 -0
  58. data/source/bzs/test/tdclphp/transactd_blob_Test.php +325 -0
  59. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +183 -0
  60. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +212 -0
  61. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +332 -0
  62. data/source/bzs/test/tdclrb/transactd_spec.rb +256 -1
  63. data/source/bzs/test/trdclengn/test_blob.cpp +327 -0
  64. data/source/bzs/test/trdclengn/test_trdclengn.cpp +485 -5
  65. data/source/global/tdclatl/QueryBase.cpp +231 -0
  66. data/source/global/tdclatl/QueryBase.h +96 -0
  67. data/source/global/tdclatl/Table.cpp +24 -0
  68. data/source/global/tdclatl/Table.h +2 -1
  69. data/source/global/tdclatl/resource.h +0 -0
  70. data/source/global/tdclatl/tdclatl.idl +88 -2
  71. metadata +16 -3
  72. data/bin/common/tdclc_32_1_1.dll +0 -0
  73. data/bin/common/tdclc_64_1_1.dll +0 -0
@@ -143,6 +143,14 @@ std::string getTableName(const request& req, bool forSql)
143
143
  return "";
144
144
  }
145
145
 
146
+ const char* getOwnerName(const request& req)
147
+ {
148
+ const char* p = (const char*)req.data;
149
+ if (*req.datalen && (p[*req.datalen-1] == 0x00))
150
+ return p;
151
+ return "";
152
+ }
153
+
146
154
  void dumpStdErr(int op, request& req, table* tb)
147
155
  {
148
156
  boost::scoped_array<char> msg(new char[1024]);
@@ -357,7 +365,7 @@ inline void dbExecuter::doOpenTable(request& req)
357
365
  if (dbname != "")
358
366
  {
359
367
  database* db = getDatabase(dbname.c_str(), req.cid);
360
- m_tb = db->openTable(getTableName(req), req.keyNum);// if error occured that throw exception
368
+ m_tb = db->openTable(getTableName(req), req.keyNum, getOwnerName(req));// if error occured that throw exception
361
369
  req.result = db->stat();
362
370
  if (m_tb)
363
371
  {
@@ -458,7 +466,8 @@ inline int dbExecuter::doReadMultiWithSeek(request& req, int op, char* resultBuf
458
466
  m_tb->seekKey((op == TD_KEY_GE_NEXT_MULTI) ? HA_READ_KEY_OR_NEXT : HA_READ_KEY_OR_PREV);
459
467
 
460
468
  extRequest* ereq = (extRequest*)req.data;
461
- req.result = m_readHandler->begin(m_tb, ereq, resultBuffer, RETBUF_EXT_RESERVE_SIZE, *req.datalen);
469
+ req.result = m_readHandler->begin(m_tb, ereq, true
470
+ , resultBuffer, RETBUF_EXT_RESERVE_SIZE, *req.datalen, (op == TD_KEY_GE_NEXT_MULTI));
462
471
  if (req.result != 0)
463
472
  return 1;
464
473
  if (m_tb->stat() == 0)
@@ -489,18 +498,34 @@ inline int dbExecuter::doReadMulti(request& req, int op, char* resultBuffer
489
498
  m_tb = getTable(req.pbk->handle);
490
499
  extRequest* ereq = (extRequest*)req.data;
491
500
  bool incCurrent = !((ereq->type[0]=='E') && (ereq->type[1]=='G'));
492
- req.result = m_readHandler->begin(m_tb, ereq, resultBuffer, RETBUF_EXT_RESERVE_SIZE, *req.datalen);
501
+ bool forword = (op == TD_KEY_NEXT_MULTI) || (op == TD_POS_NEXT_MULTI);
502
+ req.result = m_readHandler->begin(m_tb, ereq,(op != TD_KEY_SEEK_MULTI)
503
+ , resultBuffer, RETBUF_EXT_RESERVE_SIZE, *req.datalen, forword);
493
504
  if (req.result == 0)
494
505
  {
495
- if (op == TD_KEY_NEXT_MULTI)
496
- m_tb->getNextExt(m_readHandler, incCurrent);
497
- else if (op == TD_KEY_PREV_MULTI)
498
- m_tb->getPrevExt(m_readHandler, incCurrent);
499
- else if (op == TD_POS_NEXT_MULTI)
500
- m_tb->stepNextExt(m_readHandler, incCurrent);
501
- else if (op == TD_POS_PREV_MULTI)
502
- m_tb->stepPrevExt(m_readHandler, incCurrent);
503
- req.result = errorCodeSht(m_tb->stat());
506
+ if (op == TD_KEY_SEEK_MULTI)
507
+ {
508
+ char keynum = m_tb->keyNumByMakeOrder(req.keyNum);
509
+ if (m_tb->setKeyNum(keynum))
510
+ req.result = errorCodeSht(seekEach(ereq));
511
+ else
512
+ {
513
+ if (m_tb)m_tb->unUse();
514
+ return ret;
515
+ }
516
+ }
517
+ else
518
+ {
519
+ if (op == TD_KEY_NEXT_MULTI)
520
+ m_tb->getNextExt(m_readHandler, incCurrent);
521
+ else if (op == TD_KEY_PREV_MULTI)
522
+ m_tb->getPrevExt(m_readHandler, incCurrent);
523
+ else if (op == TD_POS_NEXT_MULTI)
524
+ m_tb->stepNextExt(m_readHandler, incCurrent);
525
+ else if (op == TD_POS_PREV_MULTI)
526
+ m_tb->stepPrevExt(m_readHandler, incCurrent);
527
+ req.result = errorCodeSht(m_tb->stat());
528
+ }
504
529
  DEBUG_WRITELOG2(op, req);
505
530
  size = req.serializeForExt(m_tb, resultBuffer, m_readHandler->end());
506
531
  if ((req.paramMask & P_MASK_BLOBBODY) && m_blobBuffer->fieldCount())
@@ -514,6 +539,26 @@ inline int dbExecuter::doReadMulti(request& req, int op, char* resultBuffer
514
539
  return ret;
515
540
  }
516
541
 
542
+ inline short dbExecuter::seekEach(extRequest* ereq)
543
+ {
544
+ short stat = 0;
545
+ logicalField* fd = &ereq->field;
546
+ for (int i=0;i<ereq->logicalCount;++i)
547
+ {
548
+ m_tb->setKeyValuesPacked(fd->ptr, fd->len);
549
+ m_tb->seekKey(HA_READ_KEY_EXACT);
550
+ if (m_tb->stat() == 0)
551
+ stat = m_readHandler->write(m_tb->position(), m_tb->posPtrLen());
552
+ else
553
+ stat = m_readHandler->write(NULL, m_tb->posPtrLen(), errorCodeSht(m_tb->stat()));
554
+ if (stat) break;
555
+ fd = fd->next();
556
+ }
557
+ if (stat==0)
558
+ stat = STATUS_REACHED_FILTER_COND;
559
+ return stat;
560
+ }
561
+
517
562
  inline void dbExecuter::doStepRead(request& req, int op)
518
563
  {
519
564
  m_tb = getTable(req.pbk->handle);
@@ -846,7 +891,12 @@ int dbExecuter::commandExec(request& req, char* resultBuffer, size_t& size, nets
846
891
  {
847
892
  database* db = getDatabaseCid(req.cid);
848
893
  m_tb = getTable(req.pbk->handle);
849
- req.result = ddl_execSql(db->thd(), makeSQLChangeTableComment(db->name(), m_tb->name(), (const char*)req.keybuf));
894
+ int num = (req.keyNum >1) ? req.keyNum -2: req.keyNum;
895
+ num += '0';
896
+ std::string s("%@%");
897
+ s += (const char*)&num;
898
+ s += (const char*)req.keybuf;
899
+ req.result = ddl_execSql(db->thd(), makeSQLChangeTableComment(db->name(), m_tb->name(), s.c_str()));
850
900
  break;
851
901
  }
852
902
  case TD_DROP_INDEX:
@@ -861,6 +911,7 @@ int dbExecuter::commandExec(request& req, char* resultBuffer, size_t& size, nets
861
911
  if (doReadMultiWithSeek(req, op, resultBuffer, size, optionalData) == EXECUTE_RESULT_SUCCESS)
862
912
  return EXECUTE_RESULT_SUCCESS; // Caution Call unUse()
863
913
  break;
914
+ case TD_KEY_SEEK_MULTI:
864
915
  case TD_KEY_NEXT_MULTI:
865
916
  case TD_KEY_PREV_MULTI:
866
917
  case TD_POS_NEXT_MULTI:
@@ -39,6 +39,7 @@ namespace mysql
39
39
  {
40
40
 
41
41
  class ReadRecordsHandler;
42
+ struct extRequest;
42
43
 
43
44
  #define FOR_SQL true
44
45
 
@@ -72,7 +73,7 @@ class dbExecuter : public engine::mysql::dbManager
72
73
  inline void doDeleteKey(request& req);
73
74
  inline void doInsertBulk(request& req);
74
75
  inline void doStat(request& req);
75
-
76
+ inline short seekEach(extRequest* ereq);
76
77
  public:
77
78
  dbExecuter();
78
79
  ~dbExecuter();
@@ -130,10 +130,9 @@ void tabledef::setTableName(const wchar_t* s)
130
130
  WideCharToMultiByte(schemaCodePage, (schemaCodePage == CP_UTF8) ? 0:WC_COMPOSITECHECK, s, -1, m_tableName, TABLE_NAME_SIZE, NULL, NULL);
131
131
  }
132
132
  #endif //_UNICODE
133
-
134
- bool fielddef::isStringType()const
133
+ bool isStringType(uchar_td type)
135
134
  {
136
- return ((type == ft_string)|| (type == ft_zstring)
135
+ return ((type == ft_string)|| (type == ft_zstring)
137
136
  ||(type == ft_wstring)|| (type == ft_wzstring)
138
137
  ||(type == ft_myvarchar)|| (type == ft_myvarbinary)
139
138
  ||(type == ft_mywvarchar)|| (type == ft_mywvarbinary)
@@ -142,6 +141,12 @@ bool fielddef::isStringType()const
142
141
  ||(type == ft_lstring)|| (type == ft_note));
143
142
  }
144
143
 
144
+
145
+ bool fielddef::isStringType()const
146
+ {
147
+ return tdap::isStringType(type);
148
+ }
149
+
145
150
  unsigned int fielddef::charNum(/*int index*/)const
146
151
  {
147
152
  if (type==ft_mychar)
@@ -215,6 +220,7 @@ const _TCHAR* getTypeName(short type)
215
220
  case ft_mytimestamp: return _T("myTimeStamp");
216
221
  case ft_mytext: return _T("myText");
217
222
  case ft_myblob: return _T("myBlob");
223
+ case ft_autoIncUnsigned: return _T("AutoIncUnsigned");
218
224
  case ft_nullindicator: return _T("Nullindicator");
219
225
  default: return _T("Unknown");
220
226
  }
@@ -299,6 +305,32 @@ const _TCHAR* btrVersion::moduleVersionShortString(_TCHAR* buf)
299
305
  return buf;
300
306
  }
301
307
 
308
+ PACKAGE uchar_td getFilterLogicTypeCode(const _TCHAR* cmpstr)
309
+ {
310
+ if (_tcscmp(cmpstr, _T("=")) == 0)
311
+ return (uchar_td)1;
312
+
313
+ if (_tcscmp(cmpstr, _T(">")) == 0)
314
+ return (uchar_td)2;
315
+
316
+ if (_tcscmp(cmpstr, _T("<")) == 0)
317
+ return (uchar_td)3;
318
+
319
+ if (_tcscmp(cmpstr, _T("<>")) == 0)
320
+ return (uchar_td)4;
321
+
322
+ if (_tcscmp(cmpstr, _T("=>")) == 0)
323
+ return (uchar_td)5;
324
+ if (_tcscmp(cmpstr, _T(">=")) == 0)
325
+ return (uchar_td)5;
326
+
327
+ if (_tcscmp(cmpstr, _T("=<")) == 0)
328
+ return (uchar_td)6;
329
+ if (_tcscmp(cmpstr, _T("<=")) == 0)
330
+ return (uchar_td)6;
331
+ return 255;
332
+ }
333
+
302
334
  }//namespace tdap
303
335
  }//namespace protocol
304
336
  }//namespace db
@@ -134,11 +134,12 @@ struct keySegment
134
134
 
135
135
  /* brief A key infomation
136
136
  */
137
+ #define MAX_KEY_SEGMENT 8
137
138
  struct keydef
138
139
  {
139
- uchar_td segmentCount; // Number of segment
140
- keySegment segments[8]; // key segments . max 8 segments
141
- uchar_td keyNumber; // key number
140
+ uchar_td segmentCount; // Number of segment
141
+ keySegment segments[MAX_KEY_SEGMENT]; // key segments . max 8 segments
142
+ uchar_td keyNumber; // key number
142
143
  };
143
144
  // 26byte
144
145
 
@@ -173,6 +174,9 @@ PACKAGE ushort_td lenByCharnum(uchar_td type, uchar_td charsetIndex
173
174
 
174
175
  #endif
175
176
 
177
+ /* Is field type string ?*/
178
+ PACKAGE bool isStringType(uchar_td type);
179
+
176
180
  /* Mark of ** that BizStation Corp internal use only.
177
181
  */
178
182
  template <int N>
@@ -550,6 +554,10 @@ struct btrVersions
550
554
  #pragma option -a.
551
555
  pragma_pop
552
556
 
557
+ /*filter cobine type*/
558
+ enum combineType{eCend, eCand, eCor};
559
+
560
+ PACKAGE uchar_td getFilterLogicTypeCode(const _TCHAR* cmpstr);
553
561
 
554
562
  }// namespace tdap
555
563
  }// namespace protocol
@@ -125,6 +125,7 @@ typedef short_td (__STDCALL *BTRCALLID_PTR)(ushort_td,void*,void*, uint_td*
125
125
  #define TD_ADD_SENDBLOB 92
126
126
  #define TD_GET_BLOB_BUF 93
127
127
  #define TD_STASTISTICS 94
128
+ #define TD_KEY_SEEK_MULTI 95
128
129
 
129
130
 
130
131
 
@@ -165,50 +166,61 @@ typedef short_td (__STDCALL *BTRCALLID_PTR)(ushort_td,void*,void*, uint_td*
165
166
 
166
167
  /** field types
167
168
  */
168
- #define ft_string 0
169
- #define ft_integer 1
170
- #define ft_float 2
171
- #define ft_date 3
172
- #define ft_time 4
173
- #define ft_decimal 5
174
- #define ft_money 6
175
- #define ft_logical 7
176
- #define ft_numeric 8
177
- #define ft_bfloat 9
178
- #define ft_lstring 10
179
- #define ft_zstring 11
180
- #define ft_note 12
181
- #define ft_lvar 13
182
- #define ft_uinteger 14
183
- #define ft_autoinc 15
184
- #define ft_bit 16
185
- #define ft_numericsts 17
186
- #define ft_numericsa 18
187
- #define ft_currency 19
188
- #define ft_timestamp 20
189
- #define ft_blob 21
190
- #define ft_reserve22 22
191
- #define ft_reserve23 23
192
- #define ft_reserve24 24
193
- #define ft_wstring 25
194
- #define ft_wzstring 26
195
- #define ft_guid 27
196
- #define ft_datatime 30
197
- #define ft_myvarchar 40
198
- #define ft_myvarbinary 41
199
- #define ft_mywvarchar 42
200
- #define ft_mywvarbinary 43
201
- #define ft_mychar 44
202
- #define ft_mywchar 45
203
- #define ft_mydate 46
204
- #define ft_mytime 47
205
- #define ft_mydatetime 48
206
- #define ft_mytimestamp 49
207
- #define ft_mytext 50
208
- #define ft_myblob 51
209
- #define ft_nullindicator 255
210
-
211
-
169
+ #define ft_string 0
170
+ #define ft_integer 1
171
+ #define ft_float 2
172
+ #define ft_date 3
173
+ #define ft_time 4
174
+ #define ft_decimal 5
175
+ #define ft_money 6
176
+ #define ft_logical 7
177
+ #define ft_numeric 8
178
+ #define ft_bfloat 9
179
+ #define ft_lstring 10
180
+ #define ft_zstring 11
181
+ #define ft_note 12
182
+ #define ft_lvar 13
183
+ #define ft_uinteger 14
184
+ #define ft_autoinc 15
185
+ #define ft_bit 16
186
+ #define ft_numericsts 17
187
+ #define ft_numericsa 18
188
+ #define ft_currency 19
189
+ #define ft_timestamp 20
190
+ #define ft_blob 21
191
+ #define ft_reserve22 22
192
+ #define ft_reserve23 23
193
+ #define ft_reserve24 24
194
+ #define ft_wstring 25
195
+ #define ft_wzstring 26
196
+ #define ft_guid 27
197
+ #define ft_datatime 30
198
+ #define ft_myvarchar 40
199
+ #define ft_myvarbinary 41
200
+ #define ft_mywvarchar 42
201
+ #define ft_mywvarbinary 43
202
+ #define ft_mychar 44
203
+ #define ft_mywchar 45
204
+ #define ft_mydate 46
205
+ #define ft_mytime 47
206
+ #define ft_mydatetime 48
207
+ #define ft_mytimestamp 49
208
+ #define ft_mytext 50
209
+ #define ft_myblob 51
210
+ #define ft_autoIncUnsigned 52
211
+ #define ft_nullindicator 255
212
+
213
+ /** compair types
214
+ */
215
+ enum eCompType
216
+ {
217
+ equal = 1,
218
+ greater = 2,
219
+ less = 3,
220
+ notEq = 4,
221
+ greaterEq = 5,
222
+ lessEq = 6
223
+ };
212
224
 
213
225
  /** charset type number
214
226
  */
@@ -316,6 +328,7 @@ typedef short_td (__STDCALL *BTRCALLID_PTR)(ushort_td,void*,void*, uint_td*
316
328
  #define STATUS_INVALID_OWNERNAME 51
317
329
  #define STATUS_TABLE_EXISTS_ERROR 59
318
330
  #define STATUS_LIMMIT_OF_REJECT 60
331
+ #define STATUS_WARKSPACE_TOO_SMALL 61
319
332
  #define STATUS_REACHED_FILTER_COND 64
320
333
  #define STATUS_INVALID_FIELD_OFFSET 65
321
334
  #define STATUS_CHANGE_CONFLICT 80
@@ -335,9 +348,6 @@ typedef short_td (__STDCALL *BTRCALLID_PTR)(ushort_td,void*,void*, uint_td*
335
348
  #define ERROR_TD_NOT_CONNECTED 3110
336
349
 
337
350
 
338
- #define STATUS_BUFFERTOOSMALL 22
339
- #define STATUS_KEYBUFFERTOOSMALL 21
340
-
341
351
  #define TRANSACTD_SCHEMANAME _T("transactd_schema")
342
352
  #define TYPE_SCHEMA_BDF (short)0
343
353
  #define TYPE_SCHEMA_DDF (short)1
@@ -364,8 +374,8 @@ typedef short_td (__STDCALL *BTRCALLID_PTR)(ushort_td,void*,void*, uint_td*
364
374
  If you change this version then you need change The ($TargetName) project options too.
365
375
  */
366
376
  #define C_INTERFACE_VER_MAJOR "1"//##1 Build marker! Don't remove
367
- #define C_INTERFACE_VER_MINOR "1"//##2 Build marker! Don't remove
368
- #define C_INTERFACE_VER_RELEASE "2"//##3 Build marker! Don't remove
377
+ #define C_INTERFACE_VER_MINOR "2"//##2 Build marker! Don't remove
378
+ #define C_INTERFACE_VER_RELEASE "0"//##3 Build marker! Don't remove
369
379
 
370
380
  #ifdef LINUX
371
381
  #ifdef __APPLE__
@@ -414,15 +424,15 @@ typedef short_td (__STDCALL *BTRCALLID_PTR)(ushort_td,void*,void*, uint_td*
414
424
 
415
425
 
416
426
  #define CPP_INTERFACE_VER_MAJOR "1"//##4 Build marker! Don't remove
417
- #define CPP_INTERFACE_VER_MINOR "1"//##5 Build marker! Don't remove
418
- #define CPP_INTERFACE_VER_RELEASE "2"//##6 Build marker! Don't remove
427
+ #define CPP_INTERFACE_VER_MINOR "2"//##5 Build marker! Don't remove
428
+ #define CPP_INTERFACE_VER_RELEASE "0"//##6 Build marker! Don't remove
419
429
 
420
430
  #ifdef _WIN32
421
431
  #define CPP_INTERFACE_VERSTR "_" COMPILER_VERSTR "_" TD_LIB_PART "_" CPP_INTERFACE_VER_MAJOR "_" CPP_INTERFACE_VER_MINOR //use autolink
422
432
  #endif
423
433
 
424
434
  #define TRANSACTD_VER_MAJOR 1//##7 Build marker! Don't remove
425
- #define TRANSACTD_VER_MINOR 1//##8 Build marker! Don't remove
426
- #define TRANSACTD_VER_RELEASE 2//##9 Build marker! Don't remove
435
+ #define TRANSACTD_VER_MINOR 2//##8 Build marker! Don't remove
436
+ #define TRANSACTD_VER_RELEASE 0//##9 Build marker! Don't remove
427
437
 
428
438
  #endif //BZS_DB_PROTOCOL_TDAP_TDAPCAPI_H
@@ -106,9 +106,14 @@
106
106
 
107
107
  #else //!defined(LINUX)
108
108
 
109
- #ifdef __MINGW32__
110
- #define _ttof atof
111
- #endif
109
+ // define _ttof for MinGW or less than visual studio 2010
110
+ #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER < 1600)
111
+ #ifdef _UNICODE
112
+ #define _ttof _wtof
113
+ #else
114
+ #define _ttof atof
115
+ #endif
116
+ #endif
112
117
 
113
118
  /* c c++ runtime library */
114
119
  #include <tchar.h>
@@ -23,14 +23,8 @@ Each worker shows the connection object pointer.
23
23
 
24
24
  struct clientID
25
25
  {
26
-
27
- #ifdef __x86_64__
28
- void* con;
29
- char_td reserved[4];
30
- #else
31
26
  void* con;
32
- char_td reserved[8];
33
- #endif
27
+ char_td reserved[12 - sizeof(void*)];//32bit = 8 64bit = 4
34
28
  char_td aid[2];
35
29
  ushort_td id;
36
30
  };