transactd 2.4.0 → 2.4.2

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA.md +37 -29
  3. data/BUILD_WIN-JA.md +96 -69
  4. data/CMakeLists.txt +7 -17
  5. data/README-JA.md +22 -17
  6. data/README.md +23 -16
  7. data/{RELEASE_NOTE-JA → RELEASE_NOTE-JA.md} +163 -98
  8. data/{RELEASE_NOTE → RELEASE_NOTE.md} +165 -99
  9. data/bin/common/tdclc_32_2_4.dll +0 -0
  10. data/bin/common/tdclc_64_2_4.dll +0 -0
  11. data/build/common/get_boost_libs.cmake +2 -0
  12. data/build/common/system.cmake +6 -4
  13. data/build/common/transactd_cl_output.cmake +14 -2
  14. data/build/common/transactd_common.cmake +34 -12
  15. data/build/tdclc/CMakeLists.txt +10 -2
  16. data/build/tdclc/tdclc.rc +4 -4
  17. data/build/tdclcpp/CMakeLists.txt +34 -9
  18. data/build/tdclcpp/tdclcpp.rc +4 -4
  19. data/build/tdclrb/CMakeLists.txt +24 -15
  20. data/build/tdclrb/gem/Makefile.win32-VS +2 -2
  21. data/build/tdclrb/gem_output.cmake +27 -10
  22. data/build/tdclrb/tdclrb.rc +4 -4
  23. data/source/bzs/db/engine/mysql/database.cpp +18 -18
  24. data/source/bzs/db/engine/mysql/database.h +4 -4
  25. data/source/bzs/db/engine/mysql/dbManager.cpp +1 -2
  26. data/source/bzs/db/engine/mysql/mysqlInternal.h +23 -2
  27. data/source/bzs/db/engine/mysql/mysqlThd.cpp +3 -2
  28. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +26 -12
  29. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +3 -3
  30. data/source/bzs/db/protocol/tdap/client/field.cpp +74 -23
  31. data/source/bzs/db/protocol/tdap/client/field.h +3 -1
  32. data/source/bzs/db/protocol/tdap/client/filter.h +4 -4
  33. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +3 -1
  34. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +16 -9
  35. data/source/bzs/db/protocol/tdap/client/memRecord.h +2 -2
  36. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +1 -1
  37. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +3 -2
  38. data/source/bzs/db/protocol/tdap/client/serializer.cpp +12 -0
  39. data/source/bzs/db/protocol/tdap/client/serializer.h +1 -0
  40. data/source/bzs/db/protocol/tdap/client/table.cpp +60 -109
  41. data/source/bzs/db/protocol/tdap/client/table.h +2 -1
  42. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +13 -0
  43. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +1 -1
  44. data/source/bzs/db/protocol/tdap/client/trdormapi.h +8 -8
  45. data/source/bzs/db/protocol/tdap/fieldComp.h +6 -0
  46. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +147 -46
  47. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +78 -0
  48. data/source/bzs/db/protocol/tdap/tdapSchema.h +6 -1
  49. data/source/bzs/db/protocol/tdap/tdapcapi.h +3 -3
  50. data/source/bzs/db/transactd/transactd.cpp +1 -1
  51. data/source/bzs/env/compiler.h +12 -0
  52. data/source/bzs/env/tcharMinGW.h +1 -0
  53. data/source/bzs/netsvc/client/tcpClient.h +4 -2
  54. data/source/bzs/netsvc/server/serverCpt.cpp +1 -0
  55. data/source/bzs/netsvc/server/serverTpool.cpp +3 -0
  56. data/source/bzs/test/tdclphp/transactd_Test.php +2 -2
  57. data/source/bzs/test/tdclphp/transactd_pool_Test.php +6 -0
  58. data/source/bzs/test/trdclengn/test_trdclengn.cpp +2 -2
  59. data/source/global/ormsrcgen/srcgen.cpp +1 -2
  60. data/source/linux/tchar.h +1 -0
  61. metadata +4 -4
@@ -367,7 +367,7 @@ public:
367
367
  : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
368
368
  {
369
369
  init(mgr, m_map.getTableName());
370
- if (table() && m_fdi)
370
+ if (m_tb.get() && m_fdi)
371
371
  initFdi(m_fdi, m_tb.get());
372
372
  }
373
373
 
@@ -375,7 +375,7 @@ public:
375
375
  : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
376
376
  {
377
377
  init(db, m_map.getTableName(), mode);
378
- if (table() && m_fdi)
378
+ if (m_tb.get() && m_fdi)
379
379
  initFdi(m_fdi, m_tb.get());
380
380
  }
381
381
 
@@ -383,7 +383,7 @@ public:
383
383
  : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
384
384
  {
385
385
  init(mgr, tableName);
386
- if (table() && m_fdi)
386
+ if (m_tb.get() && m_fdi)
387
387
  initFdi(m_fdi, m_tb.get());
388
388
  }
389
389
 
@@ -400,7 +400,7 @@ public:
400
400
  : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
401
401
  {
402
402
  init(db, tableName, mode);
403
- if (table() && m_fdi)
403
+ if (m_tb.get() && m_fdi)
404
404
  initFdi(m_fdi, m_tb.get());
405
405
  }
406
406
 
@@ -409,7 +409,7 @@ public:
409
409
  : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
410
410
  {
411
411
  init(db, tableName, mode);
412
- if (table() && m_fdi)
412
+ if (m_tb.get() && m_fdi)
413
413
  initFdi(m_fdi, m_tb.get());
414
414
  }
415
415
 
@@ -418,7 +418,7 @@ public:
418
418
  : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
419
419
  {
420
420
  init(db, tableIndex, mode);
421
- if (table() && m_fdi)
421
+ if (m_tb.get() && m_fdi)
422
422
  initFdi(m_fdi, m_tb.get());
423
423
  }
424
424
 
@@ -427,7 +427,7 @@ public:
427
427
  : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
428
428
  {
429
429
  init(db, tableIndex, mode);
430
- if (table() && m_fdi)
430
+ if (m_tb.get() && m_fdi)
431
431
  initFdi(m_fdi, m_tb.get());
432
432
  }
433
433
 
@@ -756,7 +756,7 @@ public:
756
756
  (m_map.compKeyValue(mdlb, mdl, m_tb->keyNum()) == true))
757
757
  {
758
758
  m_map.setKeyValues(mdl, fds, m_tb->keyNum());
759
- keydef* kd = &m_tb->tableDef()->keyDefs[m_tb->keyNum()];
759
+ keydef* kd = &m_tb->tableDef()->keyDefs[(int)m_tb->keyNum()];
760
760
  for (int i = 0; i < kd->segmentCount; ++i)
761
761
  q.addSeekKeyValue(fds[kd->segments[i].fieldNum].c_str());
762
762
  }
@@ -55,6 +55,12 @@ template <class T> inline int compare(const char* l, const char* r)
55
55
  return 0;
56
56
  }
57
57
 
58
+ template <class T> inline int bitMask(const char* l, const char* r)
59
+ {
60
+ T v = *((T*)l) & *((T*)r);
61
+ return (int)(*((T*)r) - v);
62
+ }
63
+
58
64
  template <class T> inline int compare(T l, T r)
59
65
  {
60
66
  if (l < r)
@@ -136,6 +136,21 @@ inline unsigned short position::packLen(const resultField* rf) const
136
136
  return m_tb->fieldDataLen(rf->fieldNum);
137
137
  }
138
138
 
139
+ template <class T> inline
140
+ int bitMask(const char* l, const char* r)
141
+ {
142
+ T v = *((T*)l) & *((T*)r);
143
+ return (int)(*((T*)r) - v);
144
+ }
145
+
146
+ inline int bitMask24(const char* l, const char* r)
147
+ {
148
+ int lv = ((*((int*)l) & 0xFFFFFF) << 8) / 0x100;
149
+ int rv = ((*((int*)r) & 0xFFFFFF) << 8) / 0x100;
150
+ int v = lv & rv;
151
+ return rv - v;
152
+ }
153
+
139
154
  inline int compareUint24(const char* l, const char* r)
140
155
  {
141
156
  unsigned int lv = *((unsigned int*)l) & 0xFFFFFF;
@@ -302,18 +317,36 @@ public:
302
317
  case ft_autoinc:
303
318
  case ft_currency:
304
319
  {
305
- switch (len)
320
+ if (logType & 8)
306
321
  {
307
- case 1:
308
- return compare<char>(l, r);
309
- case 2:
310
- return compare<short>(l, r);
311
- case 3:
312
- return compareInt24(l, r);
313
- case 4:
314
- return compare<int>(l, r);
315
- case 8:
316
- return compare<__int64>(l, r);
322
+ switch (len)
323
+ {
324
+ case 1:
325
+ return bitMask<char>(l, r);
326
+ case 2:
327
+ return bitMask<short>(l, r);
328
+ case 3:
329
+ return bitMask24(l, r);
330
+ case 4:
331
+ return bitMask<int>(l, r);
332
+ case 8:
333
+ return bitMask<__int64>(l, r);
334
+ }
335
+ }else
336
+ {
337
+ switch (len)
338
+ {
339
+ case 1:
340
+ return compare<char>(l, r);
341
+ case 2:
342
+ return compare<short>(l, r);
343
+ case 3:
344
+ return compareInt24(l, r);
345
+ case 4:
346
+ return compare<int>(l, r);
347
+ case 8:
348
+ return compare<__int64>(l, r);
349
+ }
317
350
  }
318
351
  }
319
352
  case ft_mychar:
@@ -334,18 +367,36 @@ public:
334
367
  case ft_timestamp:
335
368
  case ft_mydate:
336
369
  {
337
- switch (len)
370
+ if (logType & 8)
338
371
  {
339
- case 1:
340
- return compare<unsigned char>(l, r);
341
- case 2:
342
- return compare<unsigned short>(l, r);
343
- case 3:
344
- return compareUint24(l, r);
345
- case 4:
346
- return compare<unsigned int>(l, r);
347
- case 8:
348
- return compare<unsigned __int64>(l, r);
372
+ switch (len)
373
+ {
374
+ case 1:
375
+ return bitMask<char>(l, r);
376
+ case 2:
377
+ return bitMask<short>(l, r);
378
+ case 3:
379
+ return bitMask24(l, r);
380
+ case 4:
381
+ return bitMask<int>(l, r);
382
+ case 8:
383
+ return bitMask<__int64>(l, r);
384
+ }
385
+ }else
386
+ {
387
+ switch (len)
388
+ {
389
+ case 1:
390
+ return compare<unsigned char>(l, r);
391
+ case 2:
392
+ return compare<unsigned short>(l, r);
393
+ case 3:
394
+ return compareUint24(l, r);
395
+ case 4:
396
+ return compare<unsigned int>(l, r);
397
+ case 8:
398
+ return compare<unsigned __int64>(l, r);
399
+ }
349
400
  }
350
401
  }
351
402
 
@@ -391,6 +442,18 @@ public:
391
442
  return 0;
392
443
  };
393
444
  #else // COMP_USE_FUNCTION_POINTER
445
+ template <class T>
446
+ inline int compBitAnd(const char* l, const char* r, int sizeByte) const
447
+ {
448
+ return bitMask<T>(l, r);
449
+ }
450
+
451
+ inline int compBitAnd24(const char* l, const char* r, int sizeByte) const
452
+ {
453
+ int lv = ((*((int*)l) & 0xFFFFFF) << 8) / 0x100;
454
+ int rv = ((*((int*)r) & 0xFFFFFF) << 8) / 0x100;
455
+ return bitMask<int>((const char*)&lv, (const char*)&rv);
456
+ }
394
457
 
395
458
  template <class T>
396
459
  int compNumber(const char* l, const char* r, int sizeByte) const
@@ -450,7 +513,7 @@ public:
450
513
  return compareBlobType(l, r, type == ft_myblob, logType, sizeByte);
451
514
  }
452
515
 
453
- compFunc getCompFunc(int sizeByte) const
516
+ compFunc getCompFunc(int sizeByte, char opr) const
454
517
  {
455
518
  switch (type)
456
519
  {
@@ -458,18 +521,36 @@ public:
458
521
  case ft_autoinc:
459
522
  case ft_currency:
460
523
  {
461
- switch (len)
524
+ if (opr & 8)
462
525
  {
463
- case 1:
464
- return &logicalField::compNumber<char>;
465
- case 2:
466
- return &logicalField::compNumber<short>;
467
- case 3:
468
- return &logicalField::compNumber24;
469
- case 4:
470
- return &logicalField::compNumber<int>;
471
- case 8:
472
- return &logicalField::compNumber<__int64>;
526
+ switch (len)
527
+ {
528
+ case 1:
529
+ return &logicalField::compBitAnd<char>;
530
+ case 2:
531
+ return &logicalField::compBitAnd<short>;
532
+ case 3:
533
+ return &logicalField::compBitAnd24;
534
+ case 4:
535
+ return &logicalField::compBitAnd<int>;
536
+ case 8:
537
+ return &logicalField::compBitAnd<__int64>;
538
+ }
539
+ }else
540
+ {
541
+ switch (len)
542
+ {
543
+ case 1:
544
+ return &logicalField::compNumber<char>;
545
+ case 2:
546
+ return &logicalField::compNumber<short>;
547
+ case 3:
548
+ return &logicalField::compNumber24;
549
+ case 4:
550
+ return &logicalField::compNumber<int>;
551
+ case 8:
552
+ return &logicalField::compNumber<__int64>;
553
+ }
473
554
  }
474
555
  }
475
556
  case ft_mychar:
@@ -490,18 +571,36 @@ public:
490
571
  case ft_timestamp:
491
572
  case ft_mydate:
492
573
  {
493
- switch (len)
574
+ if (opr & 8)
494
575
  {
495
- case 1:
496
- return &logicalField::compNumber<unsigned char>;
497
- case 2:
498
- return &logicalField::compNumber<unsigned short>;
499
- case 3:
500
- return &logicalField::compNumberU24;
501
- case 4:
502
- return &logicalField::compNumber<unsigned int>;
503
- case 8:
504
- return &logicalField::compNumber<unsigned __int64>;
576
+ switch (len)
577
+ {
578
+ case 1:
579
+ return &logicalField::compBitAnd<char>;
580
+ case 2:
581
+ return &logicalField::compBitAnd<short>;
582
+ case 3:
583
+ return &logicalField::compBitAnd24;
584
+ case 4:
585
+ return &logicalField::compBitAnd<int>;
586
+ case 8:
587
+ return &logicalField::compBitAnd<__int64>;
588
+ }
589
+ }else
590
+ {
591
+ switch (len)
592
+ {
593
+ case 1:
594
+ return &logicalField::compNumber<unsigned char>;
595
+ case 2:
596
+ return &logicalField::compNumber<unsigned short>;
597
+ case 3:
598
+ return &logicalField::compNumberU24;
599
+ case 4:
600
+ return &logicalField::compNumber<unsigned int>;
601
+ case 8:
602
+ return &logicalField::compNumber<unsigned __int64>;
603
+ }
505
604
  }
506
605
  }
507
606
  case ft_mytime:
@@ -668,7 +767,7 @@ public:
668
767
  if (m_placeHolderNum)
669
768
  const_cast<logicalField*>(fd)->opr &= ~FILTER_COMBINE_PREPARE;
670
769
  #ifdef COMP_USE_FUNCTION_POINTER
671
- m_compFunc = fd->getCompFunc(m_sizeBytes);
770
+ m_compFunc = fd->getCompFunc(m_sizeBytes, fd->opr);
672
771
  setWstringCompLen();
673
772
  #endif
674
773
  if (fd->opr == 2)
@@ -794,6 +893,7 @@ public:
794
893
  switch (log)
795
894
  {
796
895
  case 1:
896
+ case 8:
797
897
  fda.m_isMatchFunc = isMatch1;
798
898
  break;
799
899
  case 2:
@@ -803,6 +903,7 @@ public:
803
903
  fda.m_isMatchFunc = isMatch3;
804
904
  break;
805
905
  case 4:
906
+ case 9:
806
907
  fda.m_isMatchFunc = isMatch4;
807
908
  break;
808
909
  case 5:
@@ -297,6 +297,80 @@ unsigned int fielddef::charNum(/* int index */) const
297
297
  return len;
298
298
  }
299
299
 
300
+ uint_td tabledef::unPack(char* ptr, size_t size) const
301
+ {
302
+ char* pos = ptr;
303
+ const char* end = pos + size;
304
+ const char* max = pos + maxRecordLen;
305
+ int movelen;
306
+ for (int i = 0; i < fieldCount; i++)
307
+ {
308
+ fielddef& fd = fieldDefs[i];
309
+ if (fd.type == ft_myfixedbinary)
310
+ {
311
+ int dl = *((unsigned short*)(pos));
312
+ memmove(pos, pos + 2, dl);
313
+ pos += fd.len - 2;
314
+ *((unsigned short*)(pos)) = 0x00;
315
+ ;
316
+ pos += 2;
317
+ }
318
+ else
319
+ {
320
+ int blen = fd.varLenBytes();
321
+ int dl = fd.len; // length
322
+ if (blen == 1)
323
+ dl = *((unsigned char*)(pos)) + blen;
324
+ else if (blen == 2)
325
+ dl = *((unsigned short*)(pos)) + blen;
326
+ if ((movelen = fd.len - dl) != 0)
327
+ {
328
+ if (max < end + movelen)
329
+ return 0;
330
+ char* src = pos + dl;
331
+ memmove(pos + fd.len, src, end - src);
332
+ memset(src, 0, movelen);
333
+ end += movelen;
334
+ }
335
+ pos += fd.len;
336
+ }
337
+ }
338
+ return (uint_td)(pos - ptr);
339
+ }
340
+
341
+ uint_td tabledef::pack(char* ptr, size_t size) const
342
+ {
343
+ char* pos = ptr;
344
+ char* end = pos + size;
345
+ int movelen;
346
+ for (int i = 0; i < fieldCount; i++)
347
+ {
348
+ fielddef& fd = fieldDefs[i];
349
+ if (fd.type == ft_myfixedbinary)
350
+ {
351
+ memmove(pos + 2, pos, fd.len - 2); // move as size pace in the field
352
+ *((unsigned short*)(pos)) = fd.len - 2; // fixed size
353
+ pos += fd.len;
354
+ }
355
+ else
356
+ {
357
+ int blen = fd.varLenBytes();
358
+ int dl = fd.len; // length
359
+ if (blen == 1)
360
+ dl = *((unsigned char*)(pos)) + blen;
361
+ else if (blen == 2)
362
+ dl = *((unsigned short*)(pos)) + blen;
363
+ pos += dl;
364
+ if ((movelen = fd.len - dl) != 0)
365
+ {
366
+ end -= movelen;
367
+ memmove(pos, pos + movelen, end - pos);
368
+ }
369
+ }
370
+ }
371
+ return (uint_td)(pos - ptr);
372
+ }
373
+
300
374
  ushort_td lenByCharnum(uchar_td type, uchar_td charsetIndex, ushort_td charnum)
301
375
  {
302
376
  ushort_td len = charnum;
@@ -517,6 +591,10 @@ PACKAGE uchar_td getFilterLogicTypeCode(const _TCHAR* cmpstr)
517
591
  return (uchar_td)eLessEq;
518
592
  else if (_tcscmp(cmpstr, _T("<=")) == 0)
519
593
  return (uchar_td)eLessEq;
594
+ else if (_tcscmp(cmpstr, _T("&")) == 0)
595
+ return (uchar_td)eBitAnd;
596
+ else if (_tcscmp(cmpstr, _T("!&")) == 0)
597
+ return (uchar_td)eNotBitAnd;
520
598
  else if (_tcscmp(cmpstr, _T("=i")) == 0)
521
599
  return (uchar_td)eEqual | CMPLOGICAL_CASEINSENSITIVE;
522
600
  else if (_tcscmp(cmpstr, _T(">i")) == 0)
@@ -719,6 +719,9 @@ struct PACKAGE tabledef
719
719
  strncpy_s(m_tableName, TABLE_NAME_SIZE, s, sizeof(m_tableName) - 1);
720
720
  }
721
721
 
722
+ uint_td unPack(char* ptr, size_t size) const;
723
+ uint_td pack(char* ptr, size_t size) const;
724
+
722
725
  ushort_td id; // table id
723
726
 
724
727
  #ifdef SWIG
@@ -824,7 +827,9 @@ enum eCompType
824
827
  eLess = 3,
825
828
  eNotEq = 4,
826
829
  eGreaterEq = 5,
827
- eLessEq = 6
830
+ eLessEq = 6,
831
+ eBitAnd = 8,
832
+ eNotBitAnd = 9
828
833
  };
829
834
 
830
835
  PACKAGE uchar_td getFilterLogicTypeCode(const _TCHAR* cmpstr);
@@ -503,7 +503,7 @@ struct handshale_t
503
503
  */
504
504
  #define C_INTERFACE_VER_MAJOR "2"//##1 Build marker! Don't remove
505
505
  #define C_INTERFACE_VER_MINOR "4"//##2 Build marker! Don't remove
506
- #define C_INTERFACE_VER_RELEASE "0"//##3 Build marker! Don't remove
506
+ #define C_INTERFACE_VER_RELEASE "2"//##3 Build marker! Don't remove
507
507
 
508
508
  /* dnamic load library name.
509
509
  The default extention of Mac is ".boudle", Therefore ".so" is popular. */
@@ -567,7 +567,7 @@ struct handshale_t
567
567
 
568
568
  #define CPP_INTERFACE_VER_MAJOR "2"//##4 Build marker! Don't remove
569
569
  #define CPP_INTERFACE_VER_MINOR "4"//##5 Build marker! Don't remove
570
- #define CPP_INTERFACE_VER_RELEASE "0"//##6 Build marker! Don't remove
570
+ #define CPP_INTERFACE_VER_RELEASE "2"//##6 Build marker! Don't remove
571
571
 
572
572
  /* use autolink tdclcpp */
573
573
  #if (__BCPLUSPLUS__ || _MSC_VER)
@@ -584,6 +584,6 @@ struct handshale_t
584
584
 
585
585
  #define TRANSACTD_VER_MAJOR 2//##7 Build marker! Don't remove
586
586
  #define TRANSACTD_VER_MINOR 4//##8 Build marker! Don't remove
587
- #define TRANSACTD_VER_RELEASE 0//##9 Build marker! Don't remove
587
+ #define TRANSACTD_VER_RELEASE 2//##9 Build marker! Don't remove
588
588
 
589
589
  #endif // BZS_DB_PROTOCOL_TDAP_TDAPCAPI_H
@@ -344,7 +344,7 @@ static st_mysql_show_var g_statusVariables[] = {
344
344
  { "trnsctd_pipe_wait_threads", (char*)&pipe::g_waitThread, SHOW_INT },
345
345
  #endif
346
346
  { "trnsctd_cur_open_databases", (char*)&g_openDatabases, SHOW_INT },
347
- { 0, 0, (enum_mysql_show_type)0 }
347
+ { NULL, NULL, (enum_mysql_show_type)0 }
348
348
  };
349
349
 
350
350
  /** plugin struct.
@@ -143,6 +143,14 @@
143
143
 
144
144
 
145
145
  // compiler name
146
+ #if (_MSC_VER == 1400)
147
+ #define COMPILER_VERSTR "vc80"
148
+ #endif
149
+
150
+ #if (_MSC_VER == 1500)
151
+ #define COMPILER_VERSTR "vc90"
152
+ #endif
153
+
146
154
  #if (_MSC_VER == 1600)
147
155
  #define COMPILER_VERSTR "vc100"
148
156
  #endif
@@ -155,6 +163,10 @@
155
163
  #define COMPILER_VERSTR "vc120"
156
164
  #endif
157
165
 
166
+ #if (_MSC_VER == 1900)
167
+ #define COMPILER_VERSTR "vc140"
168
+ #endif
169
+
158
170
  #if (__BCPLUSPLUS__ >= 0x630 && (__BCPLUSPLUS__ < 0x640))
159
171
  #define COMPILER_VERSTR "bc150"
160
172
  #endif
@@ -40,6 +40,7 @@ typedef wchar_t _TUCHAR;
40
40
  #else // NOT _UNICODE
41
41
 
42
42
  #define _tcsncpy_s strncpy_s
43
+ #define _tcsupr_s(a, b) (_strupr(a))
43
44
 
44
45
  #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 5) // 4.5 and lesser
45
46
  #define _tcscpy_s strcpy_s
@@ -28,9 +28,11 @@
28
28
  #if (BOOST_VERSION > 104900)
29
29
  #include <boost/asio/deadline_timer.hpp>
30
30
  #else
31
- #ifdef __APPLE__
31
+ #if (!defined(__BCPLUSPLUS__) || defined(__clang__) || (__BCPLUSPLUS__ > 0x0651))
32
32
  #include <boost/asio.hpp>
33
33
  #include <boost/date_time/posix_time/posix_time.hpp>
34
+ #else
35
+ #define NO_CONNECT_TIMER
34
36
  #endif
35
37
  #endif
36
38
 
@@ -405,7 +407,7 @@ public:
405
407
 
406
408
  /** Implementation of The TCP connection.
407
409
  */
408
- #if defined(LINUX)
410
+ #ifndef NO_CONNECT_TIMER
409
411
  #define USE_CONNECT_TIMER
410
412
  #endif
411
413
 
@@ -200,6 +200,7 @@ public:
200
200
  {
201
201
  m_ios.reset();
202
202
  m_socket.set_option(boost::asio::ip::tcp::no_delay(true));
203
+ m_socket.set_option(boost::asio::socket_base::keep_alive(true));
203
204
  boost::system::error_code ec;
204
205
  m_socket.set_option(
205
206
  boost::asio::socket_base::receive_buffer_size(512 * 1024), ec);
@@ -313,6 +313,9 @@ public:
313
313
  {
314
314
  const boost::asio::ip::tcp::no_delay nodelay(true);
315
315
  m_newConnection->socket().set_option(nodelay);
316
+ m_newConnection->socket().set_option(
317
+ boost::asio::socket_base::keep_alive(true));
318
+
316
319
  boost::system::error_code ec;
317
320
  tcp::endpoint endpoint =
318
321
  m_newConnection->socket().remote_endpoint(ec);
@@ -1722,7 +1722,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1722
1722
  $tb = $this->openTable($db);
1723
1723
  Bz\pooledDbManager::setMaxConnections(3);
1724
1724
  // Lock last record and insert to next of it
1725
- $w = new SeekLessThanWorker();
1725
+ /*$w = new SeekLessThanWorker();
1726
1726
  $tb->setFV(FDI_ID, 300000);
1727
1727
  $tb->seekLessThan(false, Bz\transactd::ROW_LOCK_X);
1728
1728
  $this->assertEquals($tb->stat(), 0);
@@ -1755,7 +1755,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1755
1755
  $tb->del();
1756
1756
  $this->assertEquals($tb->stat(), 0);
1757
1757
  }
1758
- }
1758
+ }*/
1759
1759
  // Lock last record and delete it
1760
1760
  $w = new SeekLessThanWorker();
1761
1761
  $tb->setFV(FDI_ID, 300000);
@@ -130,4 +130,10 @@ class transactdPoolTest extends PHPUnit_Framework_TestCase
130
130
  }
131
131
  $this->assertEquals(true, true);
132
132
  }
133
+
134
+ public function testReset()
135
+ {
136
+ $dbm1 = new Bz\pooledDbManager();
137
+ $dbm1->reset(0);
138
+ }
133
139
  }
@@ -113,7 +113,7 @@ const _TCHAR* makeUri(const _TCHAR* protocol, const _TCHAR* host,
113
113
  const _TCHAR* dbname, const _TCHAR* dbfile=_T(""))
114
114
  {
115
115
  connectParams cp(protocol, host, dbname, dbfile, g_userName, g_password);
116
- _tcscpy(g_uri, cp.uri());
116
+ _tcscpy_s(g_uri, 260, cp.uri());
117
117
  /*if (dbfile)
118
118
  _stprintf_s(g_uri, MAX_PATH, _T("%s://%s/%s?dbfile=%s"), protocol, host,
119
119
  dbname, dbfile);
@@ -3648,7 +3648,7 @@ void testGetEqualKanji(database* db)
3648
3648
  void testResultField(database* db)
3649
3649
  {
3650
3650
  table* tb = openTable(db);
3651
- resultField rf;
3651
+ resultField rf = {0, 0};
3652
3652
  rf.setParam(tb, _T("name"));
3653
3653
 
3654
3654
  BOOST_CHECK_MESSAGE(rf.len == 33, " resultField.setParam");
@@ -533,8 +533,7 @@ string cppSrcGen::makeMapWriteString()
533
533
  string cppSrcGen::makeMapKeyCompString()
534
534
  {
535
535
  string ret;
536
- if ((m_tabledef->primaryKeyNum >= 0) &&
537
- (m_tabledef->primaryKeyNum < m_tabledef->keyCount))
536
+ if (m_tabledef->primaryKeyNum < m_tabledef->keyCount)
538
537
  {
539
538
  keydef* kd = &m_tabledef->keyDefs[m_tabledef->primaryKeyNum];
540
539
  string idt = "\t";
data/source/linux/tchar.h CHANGED
@@ -333,6 +333,7 @@ typedef char _TUCHAR;
333
333
  #define _tcsset _strset
334
334
  #define _tcslwr _strlwr
335
335
  #define _tcsupr _strupr
336
+ #define _tcsupr_s(a, b) (_strupr(a))
336
337
  #define _tcsxfrm strxfrm
337
338
  #define _tcscoll strcoll
338
339
  #define _tcsicoll _stricoll
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transactd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - BizStation Corp.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-08 00:00:00.000000000 Z
11
+ date: 2015-08-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Transactd client for ruby gem
14
14
  email: transactd@bizstation.jp
@@ -328,8 +328,8 @@ files:
328
328
  - ./README.md
329
329
  - ./README_ORMSRCGEN-JA.md
330
330
  - ./README_ORMSRCGEN.md
331
- - ./RELEASE_NOTE
332
- - ./RELEASE_NOTE-JA
331
+ - ./RELEASE_NOTE-JA.md
332
+ - ./RELEASE_NOTE.md
333
333
  - ./transactd.gemspec
334
334
  homepage: http://www.bizstation.jp/ja/transactd
335
335
  licenses: