transactd 2.4.5 → 3.0.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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/CMakeLists.txt +1 -1
  3. data/README-JA.md +52 -529
  4. data/README.md +52 -523
  5. data/bin/common/tdclc_32_3_0.dll +0 -0
  6. data/bin/common/tdclc_64_3_0.dll +0 -0
  7. data/build/common/system.cmake +2 -1
  8. data/build/common/transactd_cl_common.cmake +3 -6
  9. data/build/swig/ruby/ruby.swg +85 -28
  10. data/build/swig/ruby/tdclrb_wrap.cpp +3195 -1578
  11. data/build/swig/tdcl.i +161 -5
  12. data/build/tdclc/CMakeLists.txt +1 -0
  13. data/build/tdclc/tdclc.cbproj +7 -1
  14. data/build/tdclc/tdclc.rc +4 -4
  15. data/build/tdclcpp/tdclcpp.rc +4 -4
  16. data/build/tdclcpp/tdclcpp_bc.cbproj +2 -5
  17. data/build/tdclrb/tdclrb.rc +4 -4
  18. data/source/bzs/db/blobStructs.h +1 -1
  19. data/source/bzs/db/engine/mysql/database.cpp +199 -74
  20. data/source/bzs/db/engine/mysql/database.h +47 -18
  21. data/source/bzs/db/engine/mysql/dbManager.cpp +1 -0
  22. data/source/bzs/db/engine/mysql/mysqlInternal.h +32 -8
  23. data/source/bzs/db/protocol/tdap/btrDate.cpp +110 -75
  24. data/source/bzs/db/protocol/tdap/btrDate.h +46 -21
  25. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +18 -18
  26. data/source/bzs/db/protocol/tdap/client/activeTable.h +25 -25
  27. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +10 -4
  28. data/source/bzs/db/protocol/tdap/client/client.cpp +6 -5
  29. data/source/bzs/db/protocol/tdap/client/client.h +82 -15
  30. data/source/bzs/db/protocol/tdap/client/database.cpp +531 -142
  31. data/source/bzs/db/protocol/tdap/client/database.h +19 -6
  32. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +461 -408
  33. data/source/bzs/db/protocol/tdap/client/dbDef.h +11 -17
  34. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +61 -13
  35. data/source/bzs/db/protocol/tdap/client/field.cpp +1592 -1398
  36. data/source/bzs/db/protocol/tdap/client/field.h +110 -121
  37. data/source/bzs/db/protocol/tdap/client/fields.h +40 -10
  38. data/source/bzs/db/protocol/tdap/client/filter.h +69 -55
  39. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +296 -164
  40. data/source/bzs/db/protocol/tdap/client/groupQuery.h +77 -25
  41. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +31 -13
  42. data/source/bzs/db/protocol/tdap/client/memRecord.h +31 -21
  43. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +1 -1
  44. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
  45. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +69 -24
  46. data/source/bzs/db/protocol/tdap/client/nsTable.h +3 -1
  47. data/source/bzs/db/protocol/tdap/client/recordset.cpp +1 -0
  48. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +46 -27
  49. data/source/bzs/db/protocol/tdap/client/request.h +2 -1
  50. data/source/bzs/db/protocol/tdap/client/serializer.cpp +44 -9
  51. data/source/bzs/db/protocol/tdap/client/serializer.h +1 -1
  52. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +182 -76
  53. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +23 -12
  54. data/source/bzs/db/protocol/tdap/client/stringConverter.h +8 -10
  55. data/source/bzs/db/protocol/tdap/client/table.cpp +172 -93
  56. data/source/bzs/db/protocol/tdap/client/table.h +112 -37
  57. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +17 -0
  58. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +0 -1
  59. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +0 -2
  60. data/source/bzs/db/protocol/tdap/client/trdormapi.h +1 -1
  61. data/source/bzs/db/protocol/tdap/fieldComp.h +698 -14
  62. data/source/bzs/db/protocol/tdap/myDateTime.cpp +723 -307
  63. data/source/bzs/db/protocol/tdap/myDateTime.h +294 -0
  64. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +164 -54
  65. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +6 -3
  66. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +133 -550
  67. data/source/bzs/db/protocol/tdap/mysql/request.h +6 -5
  68. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +217 -82
  69. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +1 -1
  70. data/source/bzs/db/protocol/tdap/tdapRequest.h +4 -9
  71. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +808 -17
  72. data/source/bzs/db/protocol/tdap/tdapSchema.h +656 -164
  73. data/source/bzs/db/protocol/tdap/tdapcapi.h +130 -28
  74. data/source/bzs/db/protocol/tdap/uri.h +40 -32
  75. data/source/bzs/db/transactd/connManager.cpp +1 -1
  76. data/source/bzs/db/transactd/transactd.cpp +7 -0
  77. data/source/bzs/env/compiler.h +107 -94
  78. data/source/bzs/env/crosscompile.cpp +24 -12
  79. data/source/bzs/env/crosscompile.h +75 -6
  80. data/source/bzs/env/mbcswchrLinux.cpp +2 -2
  81. data/source/bzs/env/tcharMinGW.h +4 -0
  82. data/source/bzs/example/changeSchema.cpp +22 -17
  83. data/source/bzs/example/queryData.cpp +4 -0
  84. data/source/bzs/netsvc/client/iconnection.h +3 -1
  85. data/source/bzs/netsvc/client/tcpClient.h +10 -3
  86. data/source/bzs/rtl/stringBuffers.cpp +7 -0
  87. data/source/bzs/test/tdclatl/bench_query_atl.js +6 -0
  88. data/source/bzs/test/tdclatl/bench_tdclatl.js +8 -1
  89. data/source/bzs/test/tdclatl/test_query_atl.js +22 -2
  90. data/source/bzs/test/tdclatl/test_v3.js +1017 -0
  91. data/source/bzs/test/tdclphp/transactd_Test.php +55 -21
  92. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +0 -5
  93. data/source/bzs/test/tdclphp/transactd_pool_Test.php +2 -0
  94. data/source/bzs/test/tdclphp/transactd_v3_Test.php +743 -0
  95. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -5
  96. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +2 -0
  97. data/source/bzs/test/tdclrb/transactd_spec.rb +39 -16
  98. data/source/bzs/test/tdclrb/transactd_v3_spec.rb +748 -0
  99. data/source/bzs/test/transactdBench/transactdBench.cpp +55 -58
  100. data/source/bzs/test/transactdBench/transactdBench2.cpp +1 -3
  101. data/source/bzs/test/trdclengn/testField.h +3305 -0
  102. data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +1050 -0
  103. data/source/bzs/test/trdclengn/test_trdclengn.cpp +112 -190
  104. data/source/bzs/test/trdclengn/testbase.h +137 -0
  105. data/source/global/ormsrcgen/srcgen.cpp +23 -12
  106. data/source/global/ormsrcgen/template/ormDataClass_template.h +2 -0
  107. data/source/global/querystmts/querystmts.cpp +2 -3
  108. data/source/global/tdclatl/Bitset.cpp +38 -0
  109. data/source/global/tdclatl/Bitset.h +63 -0
  110. data/source/global/tdclatl/Database.cpp +59 -18
  111. data/source/global/tdclatl/Database.h +7 -4
  112. data/source/global/tdclatl/DbDef.cpp +6 -6
  113. data/source/global/tdclatl/DbDef.h +2 -1
  114. data/source/global/tdclatl/Field.cpp +112 -0
  115. data/source/global/tdclatl/Field.h +19 -5
  116. data/source/global/tdclatl/FieldDef.cpp +137 -16
  117. data/source/global/tdclatl/FieldDef.h +18 -2
  118. data/source/global/tdclatl/FieldDefs.cpp +54 -1
  119. data/source/global/tdclatl/FieldDefs.h +3 -0
  120. data/source/global/tdclatl/GroupQuery.cpp +8 -8
  121. data/source/global/tdclatl/QueryBase.cpp +65 -0
  122. data/source/global/tdclatl/QueryBase.h +10 -0
  123. data/source/global/tdclatl/Record.cpp +33 -2
  124. data/source/global/tdclatl/Record.h +3 -1
  125. data/source/global/tdclatl/RecordsetQuery.cpp +42 -0
  126. data/source/global/tdclatl/RecordsetQuery.h +8 -0
  127. data/source/global/tdclatl/Table.cpp +127 -3
  128. data/source/global/tdclatl/Table.h +10 -1
  129. data/source/global/tdclatl/TableDef.cpp +41 -8
  130. data/source/global/tdclatl/TableDef.h +7 -2
  131. data/source/global/tdclatl/activeTable.cpp +40 -71
  132. data/source/global/tdclatl/resource.h +0 -0
  133. data/source/global/tdclatl/tdclatl.idl +222 -28
  134. data/source/linux/tchar.h +100 -96
  135. data/transactd.gemspec +2 -2
  136. metadata +13 -11
  137. data/BUILD_UNIX-JA.md +0 -161
  138. data/BUILD_WIN-JA.md +0 -326
  139. data/README_ORMSRCGEN-JA.md +0 -115
  140. data/README_ORMSRCGEN.md +0 -118
  141. data/RELEASE_NOTE-JA.md +0 -356
  142. data/RELEASE_NOTE.md +0 -360
  143. data/bin/common/tdclc_32_2_4.dll +0 -0
  144. data/bin/common/tdclc_64_2_4.dll +0 -0
  145. data/source/bzs/test/trdclengn/test_blob.cpp +0 -375
@@ -22,6 +22,8 @@ mb_internal_encoding('UTF-8');
22
22
  require_once("transactd.php");
23
23
  use BizStation\Transactd as Bz;
24
24
 
25
+ Bz\transactd::setRecordValueMode(Bz\transactd::RECORD_KEYVALUE_FIELDVALUE);
26
+
25
27
  function getHost()
26
28
  {
27
29
  $host = getenv('TRANSACTD_PHPUNIT_HOST');
@@ -148,11 +150,11 @@ class transactdTest extends PHPUnit_Framework_TestCase
148
150
  //test padChar only string or wstring
149
151
  $fd->type = Bz\transactd::ft_string;
150
152
  $fd->setPadCharSettings(true, false);
151
- $this->assertEquals($fd->usePadChar(), true);
152
- $this->assertEquals($fd->trimPadChar(), false);
153
+ $this->assertEquals($fd->isUsePadChar(), true);
154
+ $this->assertEquals($fd->isTrimPadChar(), false);
153
155
  $fd->setPadCharSettings(false, true);
154
- $this->assertEquals($fd->usePadChar(), false);
155
- $this->assertEquals($fd->trimPadChar(), true);
156
+ $this->assertEquals($fd->isUsePadChar(), false);
157
+ $this->assertEquals($fd->isTrimPadChar(), true);
156
158
 
157
159
  $fd->type = Bz\transactd::ft_zstring;
158
160
  $dbdef->updateTableDef($tableid);
@@ -220,10 +222,6 @@ class transactdTest extends PHPUnit_Framework_TestCase
220
222
  $this->assertEquals($dbdef->stat(), 0);
221
223
  $this->assertEquals($dbdef->validateTableDef($tableid), 0);
222
224
 
223
- //test toChar
224
- $s = $td->toChar('abcdefg');
225
- $this->assertEquals($s, 'abcdefg');
226
-
227
225
  }
228
226
  private function openTable($db)
229
227
  {
@@ -330,9 +328,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
330
328
  $this->assertEquals($client_ver->minorVersion, Bz\transactd::CPP_INTERFACE_VER_MINOR);
331
329
  $this->assertEquals(chr($client_ver->type), 'N');
332
330
  $my5x = ($server_ver->majorVersion == 5) && ($server_ver->minorVersion >= 5);
333
- $maria10 = ($server_ver->majorVersion == 10) && ($server_ver->minorVersion == 0);
331
+ $maria10 = ($server_ver->majorVersion == 10) && ($server_ver->minorVersion <= 1);
334
332
  $this->assertTrue($my5x || $maria10);
335
- $this->assertEquals(chr($server_ver->type), 'M');
333
+ $tmp = (chr($server_ver->type) == 'M') || (chr($server_ver->type) == 'A');
334
+ $this->assertTrue($tmp);
336
335
  $this->assertEquals($engine_ver->majorVersion, Bz\transactd::TRANSACTD_VER_MAJOR);
337
336
  $this->assertEquals($engine_ver->minorVersion, Bz\transactd::TRANSACTD_VER_MINOR);
338
337
  $this->assertEquals(chr($engine_ver->type), 'T');
@@ -1566,6 +1565,15 @@ class transactdTest extends PHPUnit_Framework_TestCase
1566
1565
  $tb2->seekFirst(Bz\transactd::ROW_LOCK_S);
1567
1566
  $this->assertEquals(Bz\transactd::STATUS_INVALID_LOCKTYPE, $tb2->stat());
1568
1567
  }
1568
+ private function isMySQL5_7($db)
1569
+ {
1570
+ $vv = new Bz\btrVersions();
1571
+ $db->getBtrVersion($vv);
1572
+ $server_ver = $vv->version(1);
1573
+ return ($db->stat() == 0) &&
1574
+ ((5 == $server_ver->majorVersion) &&
1575
+ (7 == $server_ver->minorVersion));
1576
+ }
1569
1577
  public function testExclusive()
1570
1578
  {
1571
1579
  // db mode exclusive
@@ -1597,15 +1605,24 @@ class transactdTest extends PHPUnit_Framework_TestCase
1597
1605
  $tb = $db->openTable(TABLENAME, Bz\transactd::TD_OPEN_READONLY_EXCLUSIVE);
1598
1606
  $this->assertEquals($db->stat(), 0);
1599
1607
 
1608
+ $mysql5_7 = $this->isMySQL5_7($db);
1609
+
1600
1610
  // Read only open
1601
1611
  $db2->open(URL, Bz\transactd::TYPE_SCHEMA_BDF);
1602
1612
  $this->assertEquals($db2->stat(), 0);
1603
1613
  $db2->close();
1604
1614
 
1605
1615
  // Normal open
1616
+ // Since MySQL 5.7 : D_OPEN_READONLY_EXCLUSIVE + TD_OPEN_NORMAL is fail,
1617
+ // It's correct.
1618
+ //
1619
+
1606
1620
  $db2->connect(URL_DB, true);
1607
1621
  $db2->open(URL, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_NORMAL);
1608
- $this->assertEquals($db2->stat(), 0);
1622
+ if ($mysql5_7 == true)
1623
+ $this->assertEquals($db2->stat(), Bz\transactd::STATUS_CANNOT_LOCK_TABLE);
1624
+ else
1625
+ $this->assertEquals($db2->stat(), 0);
1609
1626
  $db2->close();
1610
1627
 
1611
1628
  // Write Exclusive open
@@ -1935,7 +1952,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1935
1952
  // invalid database name
1936
1953
  $this->dropDatabase($db);
1937
1954
  $db->disconnect();
1938
- $this->assertEquals($db->stat(), 0);
1955
+ $this->assertEquals($db->stat(), 1);
1939
1956
  $db->connect(URL_DB);
1940
1957
  $this->assertEquals($db->stat(), Bz\transactd::ERROR_NO_DATABASE);
1941
1958
  $db->disconnect();
@@ -1956,7 +1973,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1956
1973
  $vv = new Bz\btrVersions();
1957
1974
  $db->getBtrVersion($vv);
1958
1975
  $server_ver = $vv->version(1);
1959
- if ('M' == chr($server_ver->type))
1976
+ if ('M' == chr($server_ver->type) || 'A' == chr($server_ver->type))
1960
1977
  {
1961
1978
  if ($server_ver->majorVersion <= 4)
1962
1979
  return false;
@@ -2468,6 +2485,21 @@ class transactdTest extends PHPUnit_Framework_TestCase
2468
2485
  //-----------------------------------------------------
2469
2486
  // transactd StringFilter
2470
2487
  //-----------------------------------------------------
2488
+ private function varLenBytes($fd)
2489
+ {
2490
+ if ((($fd->type >= ft_myvarchar) && ($fd->type <= ft_mywvarbinary)) || $fd->type == ft_lstring)
2491
+ return $fd->len < 256 ? 1 : 2;
2492
+ else if ($fd->type == ft_lvar)
2493
+ return 2;
2494
+ return 0;
2495
+ }
2496
+
2497
+ private function blobLenBytes($fd)
2498
+ {
2499
+ if (($fd->type== ft_myblob) || ($fd->type == ft_mytext))
2500
+ return $fd->len - 8;
2501
+ return 0;
2502
+ }
2471
2503
 
2472
2504
  private function createTableStringFilter($db, $id, $name, $type, $type2)
2473
2505
  {
@@ -2492,12 +2524,12 @@ class transactdTest extends PHPUnit_Framework_TestCase
2492
2524
  $fd->setName('name');
2493
2525
  $fd->type = $type;
2494
2526
  $fd->len = 44;
2495
- if ($fd->varLenBytes() != 0)
2527
+ if ($this->varLenBytes($fd) != 0)
2496
2528
  {
2497
- $fd->len = $fd->varLenBytes() + 44;
2529
+ $fd->len = $this->varLenBytes($fd) + 44;
2498
2530
  $fd->keylen = $fd->len;
2499
2531
  }
2500
- if ($fd->blobLenBytes() != 0)
2532
+ if ($this->blobLenBytes($fd) != 0)
2501
2533
  $fd->len = 12; // 8+4
2502
2534
  $fd->keylen = $fd->len;
2503
2535
  $dbdef->updateTableDef($id);
@@ -2506,12 +2538,12 @@ class transactdTest extends PHPUnit_Framework_TestCase
2506
2538
  $fd->setName('namew');
2507
2539
  $fd->type = $type2;
2508
2540
  $fd->len = 44;
2509
- if ($fd->varLenBytes() != 0)
2541
+ if ($this->varLenBytes($fd) != 0)
2510
2542
  {
2511
- $fd->len = $fd->varLenBytes() + 44;
2543
+ $fd->len = $this->varLenBytes($fd) + 44;
2512
2544
  $fd->keylen = $fd->len;
2513
2545
  }
2514
- if ($fd->blobLenBytes() != 0)
2546
+ if ($this->blobLenBytes($fd) != 0)
2515
2547
  $fd->len = 12; // 8+4
2516
2548
  $fd->keylen = $fd->len;
2517
2549
  $dbdef->updateTableDef($id);
@@ -3515,10 +3547,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
3515
3547
  $rs = $atu->keyValue(1)->read($stmt1, 15000);
3516
3548
  $ate->outerJoin($rs, $stmt2, 'id');
3517
3549
  $this->assertEquals($rs->size(), 15000);
3550
+ $this->assertEquals($rs[NO_RECORD_ID - 1]->isInvalidRecord(), true);
3518
3551
  $atg->outerJoin($rs, $stmt3, 'group');
3519
3552
  $this->assertEquals($rs->size(), 15000);
3520
3553
 
3521
- $this->assertEquals($rs[NO_RECORD_ID - 1]->isInvalidRecord(), true);
3522
3554
  $this->assertEquals($rs[NO_RECORD_ID]['comment'], '' . (NO_RECORD_ID + 1) . ' comment');
3523
3555
  $this->assertEquals($rs[NO_RECORD_ID]['blob'], '' . (NO_RECORD_ID + 1) . ' blob');
3524
3556
 
@@ -3530,13 +3562,15 @@ class transactdTest extends PHPUnit_Framework_TestCase
3530
3562
  $ate->outerJoin($rs, $stmt2, 'id');
3531
3563
  $this->assertEquals($rs->size(), 15000);
3532
3564
  $this->assertEquals($rs[NO_RECORD_ID - 1]->isInvalidRecord(), true);
3565
+ $this->assertEquals($rs[NO_RECORD_ID - 1]->getField('comment')->isNull(), true);
3533
3566
  $this->assertEquals($rs[NO_RECORD_ID]['comment'], '' . (NO_RECORD_ID + 1) . ' comment');
3534
3567
  $this->assertEquals($rs[NO_RECORD_ID]['blob'], '' . (NO_RECORD_ID + 1) . ' blob');
3535
3568
 
3536
3569
  // Test clone blob field
3537
3570
  $rs2 = clone($rs);
3538
3571
  $this->assertEquals($rs2->size(), 15000);
3539
- $this->assertEquals($rs2[NO_RECORD_ID - 1]->isInvalidRecord(), true);
3572
+ //$this->assertEquals($rs2[NO_RECORD_ID - 1]->isInvalidRecord(), true);
3573
+ $this->assertEquals($rs2[NO_RECORD_ID - 1]->getField('comment')->isNull(), true);
3540
3574
  $this->assertEquals($rs2[NO_RECORD_ID]['comment'], '' . (NO_RECORD_ID + 1) . ' comment');
3541
3575
  $this->assertEquals($rs2[NO_RECORD_ID]['blob'], '' . (NO_RECORD_ID + 1) . ' blob');
3542
3576
 
@@ -46,19 +46,14 @@ class transactdDatetimeTest extends PHPUnit_Framework_TestCase
46
46
  {
47
47
  $i_nowtime = Bz\transactd::getNowTime(); // get now time as integer
48
48
  $s_i_nowtime = Bz\transactd::btrttoa($i_nowtime);
49
- $s_i_nowtime2 = Bz\transactd::btrttoa($i_nowtime, true);
50
49
  //print_r($i_nowtime);
51
50
  //print_r($s_i_nowtime);
52
- //print_r($s_i_nowtime2);
53
51
  $nowtime = new Bz\btrTime();
54
52
  $nowtime->i = $i_nowtime; // get now time as BtrTime
55
53
  $s_nowtime = Bz\transactd::btrttoa($nowtime);
56
- $s_nowtime2 = Bz\transactd::btrttoa($nowtime, true);
57
54
  //print_r($nowtime);
58
55
  //print_r($s_nowtime);
59
- //print_r($s_nowtime2);
60
56
  $this->assertEquals($s_i_nowtime, $s_nowtime);
61
- $this->assertEquals($s_i_nowtime2, $s_nowtime2);
62
57
  }
63
58
  public function testGetBtrdatetime()
64
59
  {
@@ -21,6 +21,8 @@ mb_internal_encoding('UTF-8');
21
21
 
22
22
  require_once("transactd.php");
23
23
  use BizStation\Transactd as Bz;
24
+ Bz\transactd::setRecordValueMode(Bz\transactd::RECORD_KEYVALUE_FIELDVALUE);
25
+
24
26
 
25
27
  function getHost()
26
28
  {