transactd 2.4.0 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
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: