transactd 2.4.5 → 3.0.0

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