transactd 2.2.0 → 2.3.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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA +6 -6
  3. data/README +20 -18
  4. data/README-JA +19 -17
  5. data/RELEASE_NOTE +144 -0
  6. data/RELEASE_NOTE-JA +153 -0
  7. data/bin/common/tdclc_32_2_3.dll +0 -0
  8. data/bin/common/tdclc_64_2_3.dll +0 -0
  9. data/build/common/get_ruby_path.cmake +1 -1
  10. data/build/swig/ruby/ruby.swg +10 -9
  11. data/build/swig/ruby/tdclrb_wrap.cpp +1416 -561
  12. data/build/swig/tdcl.i +30 -3
  13. data/build/tdclc/tdclc.cbproj +1 -1
  14. data/build/tdclc/tdclc.rc +4 -4
  15. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  16. data/build/tdclcpp/tdclcpp.rc +4 -4
  17. data/build/tdclcpp/tdclcpp_bc.cbproj +1 -1
  18. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  19. data/build/tdclrb/tdclrb.rc +4 -4
  20. data/source/bzs/db/engine/mysql/database.cpp +85 -41
  21. data/source/bzs/db/engine/mysql/database.h +35 -5
  22. data/source/bzs/db/engine/mysql/mysqlInternal.h +189 -37
  23. data/source/bzs/db/engine/mysql/mysqlThd.cpp +21 -21
  24. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +11 -0
  25. data/source/bzs/db/protocol/tdap/client/activeTable.h +1 -1
  26. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +11 -4
  27. data/source/bzs/db/protocol/tdap/client/client.h +30 -1
  28. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +2 -1
  29. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +35 -5
  30. data/source/bzs/db/protocol/tdap/client/field.cpp +100 -51
  31. data/source/bzs/db/protocol/tdap/client/field.h +7 -7
  32. data/source/bzs/db/protocol/tdap/client/filter.h +20 -6
  33. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +337 -58
  34. data/source/bzs/db/protocol/tdap/client/groupQuery.h +56 -13
  35. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +83 -5
  36. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
  37. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +2 -2
  38. data/source/bzs/db/protocol/tdap/client/nsTable.h +2 -1
  39. data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +20 -6
  40. data/source/bzs/db/protocol/tdap/client/recordset.cpp +7 -0
  41. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +8 -4
  42. data/source/bzs/db/protocol/tdap/client/request.h +11 -1
  43. data/source/bzs/db/protocol/tdap/client/serializer.cpp +40 -2
  44. data/source/bzs/db/protocol/tdap/client/serializer.h +4 -2
  45. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +1 -0
  46. data/source/bzs/db/protocol/tdap/client/stringConverter.h +4 -4
  47. data/source/bzs/db/protocol/tdap/client/table.cpp +124 -71
  48. data/source/bzs/db/protocol/tdap/client/table.h +8 -7
  49. data/source/bzs/db/protocol/tdap/client/trdormapi.h +33 -1
  50. data/source/bzs/db/protocol/tdap/fieldComp.h +1 -1
  51. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +3 -1
  52. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +20 -4
  53. data/source/bzs/db/protocol/tdap/mysql/request.h +14 -0
  54. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +132 -69
  55. data/source/bzs/db/protocol/tdap/tdapRequest.h +18 -4
  56. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +32 -22
  57. data/source/bzs/db/protocol/tdap/tdapSchema.h +69 -4
  58. data/source/bzs/db/protocol/tdap/tdapcapi.h +13 -5
  59. data/source/bzs/db/protocol/tdap/uri.h +4 -4
  60. data/source/bzs/db/transactd/transactd.cpp +6 -5
  61. data/source/bzs/env/crosscompile.cpp +17 -0
  62. data/source/bzs/env/crosscompile.h +4 -1
  63. data/source/bzs/env/mbcswchrLinux.cpp +3 -0
  64. data/source/bzs/example/deleteRecords.cpp +13 -0
  65. data/source/bzs/example/deleteRecords_c.cpp +8 -1
  66. data/source/bzs/example/insertRecords.cpp +14 -0
  67. data/source/bzs/example/insertRecords_c.cpp +8 -1
  68. data/source/bzs/example/ormap_c.cpp +8 -1
  69. data/source/bzs/example/queryData.cpp +92 -2
  70. data/source/bzs/example/queryData.h +3 -1
  71. data/source/bzs/example/readRecords.cpp +13 -0
  72. data/source/bzs/example/readRecords_c.cpp +8 -1
  73. data/source/bzs/example/updateRecords.cpp +13 -0
  74. data/source/bzs/example/updateRecords_c.cpp +8 -1
  75. data/source/bzs/example/update_with_transaction.cpp +13 -0
  76. data/source/bzs/example/update_with_transaction_c.cpp +8 -1
  77. data/source/bzs/example/useORMRecord.cpp +9 -3
  78. data/source/bzs/netsvc/client/iconnection.h +8 -0
  79. data/source/bzs/netsvc/client/tcpClient.cpp +61 -16
  80. data/source/bzs/netsvc/client/tcpClient.h +430 -214
  81. data/source/bzs/netsvc/server/serverPipe.cpp +2 -2
  82. data/source/bzs/test/tdclphp/transactd_Test.php +115 -19
  83. data/source/bzs/test/tdclphp/transactd_blob_Test.php +33 -5
  84. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +21 -3
  85. data/source/bzs/test/tdclphp/transactd_pool_Test.php +17 -3
  86. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +26 -8
  87. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +13 -6
  88. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +14 -8
  89. data/source/bzs/test/tdclrb/transactd_spec.rb +117 -27
  90. data/source/bzs/test/transactdBench/scaling_bench.cpp +5 -5
  91. data/source/bzs/test/transactdBench/workerBase.h +2 -2
  92. data/source/bzs/test/trdclengn/test_trdclengn.cpp +898 -51
  93. data/source/global/tdclatl/Database.cpp +12 -0
  94. data/source/global/tdclatl/Database.h +4 -0
  95. data/source/global/tdclatl/FieldDef.cpp +19 -0
  96. data/source/global/tdclatl/FieldDef.h +4 -0
  97. data/source/global/tdclatl/FieldDefs.cpp +14 -16
  98. data/source/global/tdclatl/GroupQuery.cpp +21 -16
  99. data/source/global/tdclatl/GroupQuery.h +1 -1
  100. data/source/global/tdclatl/QueryBase.cpp +14 -0
  101. data/source/global/tdclatl/QueryBase.h +2 -0
  102. data/source/global/tdclatl/Record.cpp +41 -10
  103. data/source/global/tdclatl/Record.h +1 -1
  104. data/source/global/tdclatl/Recordset.cpp +117 -31
  105. data/source/global/tdclatl/Recordset.h +6 -5
  106. data/source/global/tdclatl/Table.cpp +24 -28
  107. data/source/global/tdclatl/Table.h +3 -4
  108. data/source/global/tdclatl/activeTable.cpp +149 -103
  109. data/source/global/tdclatl/activeTable.h +1 -1
  110. data/source/global/tdclatl/tdclatl.idl +38 -18
  111. data/transactd.gemspec +1 -1
  112. metadata +8 -4
  113. data/bin/common/tdclc_32_2_2.dll +0 -0
  114. data/bin/common/tdclc_64_2_2.dll +0 -0
@@ -319,7 +319,7 @@ public:
319
319
  char* ptr() { return m_buf.writeBuffer(); }
320
320
  };
321
321
 
322
- class connection : public iconnection, private noncopyable
322
+ class connection : public iconnection, private boost::noncopyable
323
323
  {
324
324
  mutable io_service m_ios;
325
325
  static mutex m_mutex;
@@ -483,7 +483,7 @@ unsigned int connection::m_shareMemSize;
483
483
  // worker
484
484
  // ---------------------------------------------------------------------------
485
485
 
486
- class worker : private noncopyable
486
+ class worker : private boost::noncopyable
487
487
  {
488
488
 
489
489
  static mutex m_mutex;
@@ -22,7 +22,26 @@ mb_internal_encoding('UTF-8');
22
22
  require_once("transactd.php");
23
23
  use BizStation\Transactd as Bz;
24
24
 
25
- define("HOSTNAME", "localhost/");
25
+ function getHost()
26
+ {
27
+ $host = getenv('TRANSACTD_PHPUNIT_HOST');
28
+ if (strlen($host) == 0)
29
+ {
30
+ $host = '127.0.0.1/';
31
+ }
32
+ if ($host[strlen($host) - 1] != '/')
33
+ {
34
+ $host = $host . '/';
35
+ }
36
+ return $host;
37
+ }
38
+
39
+ define("HOSTNAME", getHost());
40
+ define("USERNAME", getenv('TRANSACTD_PHPUNIT_USER'));
41
+ define("USERPART", strlen(USERNAME) == 0 ? '' : USERNAME . '@');
42
+ define("PASSWORD", getenv('TRANSACTD_PHPUNIT_PASS'));
43
+ define("PASSPART", strlen(PASSWORD) == 0 ? '' : '&pwd=' . PASSWORD);
44
+ define("PASSPART2", strlen(PASSWORD) == 0 ? '' : '?pwd=' . PASSWORD);
26
45
  define("DBNAME", "test");
27
46
  define("DBNAME_VAR", "testvar");
28
47
  define("DBNAME_SF", "testString");
@@ -30,10 +49,12 @@ define("DBNAME_QT", "querytest");
30
49
  define("TABLENAME", "user");
31
50
  define("PROTOCOL", "tdap://");
32
51
  define("BDFNAME", "?dbfile=test.bdf");
33
- define("URL", PROTOCOL . HOSTNAME . DBNAME . BDFNAME);
34
- define("URL_VAR", PROTOCOL . HOSTNAME . DBNAME_VAR . BDFNAME);
35
- define("URL_SF", PROTOCOL . HOSTNAME . DBNAME_SF . BDFNAME);
36
- define("URL_QT", PROTOCOL . HOSTNAME . DBNAME_QT . BDFNAME);
52
+ define("URL", PROTOCOL . USERPART . HOSTNAME . DBNAME . BDFNAME . PASSPART);
53
+ define("URL_VAR", PROTOCOL . USERPART . HOSTNAME . DBNAME_VAR . BDFNAME . PASSPART);
54
+ define("URL_SF", PROTOCOL . USERPART . HOSTNAME . DBNAME_SF . BDFNAME . PASSPART);
55
+ define("URL_QT", PROTOCOL . USERPART . HOSTNAME . DBNAME_QT . BDFNAME . PASSPART);
56
+ define("URL_HOST", PROTOCOL . USERPART . HOSTNAME . PASSPART2);
57
+ define("URL_DB", PROTOCOL . USERPART . HOSTNAME . DBNAME . PASSPART2);
37
58
  define("FDI_ID", 0);
38
59
  define("FDI_NAME", 1);
39
60
  define("FDI_GROUP", 2);
@@ -122,8 +143,18 @@ class transactdTest extends PHPUnit_Framework_TestCase
122
143
 
123
144
  $fd = $dbdef->insertField($tableid, 1);
124
145
  $fd->setName('name');
125
- $fd->type = Bz\transactd::ft_zstring;
126
146
  $fd->len = 33;
147
+
148
+ //test padChar only string or wstring
149
+ $fd->type = Bz\transactd::ft_string;
150
+ $fd->setPadCharSettings(true, false);
151
+ $this->assertEquals($fd->usePadChar(), true);
152
+ $this->assertEquals($fd->trimPadChar(), false);
153
+ $fd->setPadCharSettings(false, true);
154
+ $this->assertEquals($fd->usePadChar(), false);
155
+ $this->assertEquals($fd->trimPadChar(), true);
156
+
157
+ $fd->type = Bz\transactd::ft_zstring;
127
158
  $dbdef->updateTableDef($tableid);
128
159
  $this->assertEquals($dbdef->stat(), 0);
129
160
  // Set field charset index
@@ -277,7 +308,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
277
308
  public function testVersion()
278
309
  {
279
310
  $db = new Bz\database();
280
- $db->connect(PROTOCOL . HOSTNAME);
311
+ $db->connect(URL_HOST);
281
312
  $this->assertEquals($db->stat(), 0);
282
313
  $vv = new Bz\btrVersions();
283
314
  $db->getBtrVersion($vv);
@@ -717,7 +748,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
717
748
  $this->assertNotEquals($tbg, NULL);
718
749
  $db2 = new Bz\database();
719
750
  $this->assertEquals($db2->stat(), 0);
720
- $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
751
+ $db2->connect(URL_DB, true);
721
752
  $tb2 = $this->openTable($db2);
722
753
  $this->assertNotEquals($tb2, NULL);
723
754
  $tbg2 = $db2->openTable('group');
@@ -837,7 +868,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
837
868
  $db = new Bz\database();
838
869
  $tb = $this->openTable($db);
839
870
  $db2 = new Bz\database();
840
- $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
871
+ $db2->connect(URL_DB, true);
841
872
  $this->assertEquals($db2->stat(), 0);
842
873
  $this->assertNotEquals($tb, NULL);
843
874
  $tb2 = $this->openTable($db2);
@@ -889,7 +920,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
889
920
  $tb = $this->openTable($db);
890
921
  $this->assertNotEquals($tb, NULL);
891
922
  $db2 = new Bz\database();
892
- $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
923
+ $db2->connect(URL_DB, true);
893
924
  $this->assertEquals($db2->stat(), 0);
894
925
  $tb2 = $this->openTable($db2);
895
926
  $this->assertNotEquals($tb2, NULL);
@@ -1084,7 +1115,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1084
1115
  $tb = $this->openTable($db);
1085
1116
  $this->assertNotEquals($tb, NULL);
1086
1117
  $db2 = new Bz\database();
1087
- $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
1118
+ $db2->connect(URL_DB, true);
1088
1119
  $this->assertEquals($db2->stat(), 0);
1089
1120
  $tb2 = $this->openTable($db2);
1090
1121
  $this->assertNotEquals($tb2, NULL);
@@ -1372,7 +1403,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1372
1403
  $tb = $this->openTable($db);
1373
1404
  $this->assertNotEquals($tb, NULL);
1374
1405
  $db2 = new Bz\database();
1375
- $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
1406
+ $db2->connect(URL_DB, true);
1376
1407
  $this->assertEquals($db2->stat(), 0);
1377
1408
  $tb2 = $this->openTable($db2);
1378
1409
  $this->assertNotEquals($tb2, NULL);
@@ -1513,7 +1544,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1513
1544
 
1514
1545
  // Can not open database from other connections.
1515
1546
  $db2 = new Bz\database();
1516
- $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
1547
+ $db2->connect(URL_DB, true);
1517
1548
  $this->assertEquals($db2->stat(), 0);
1518
1549
  $db2->open(URL, Bz\transactd::TYPE_SCHEMA_BDF);
1519
1550
  // database open error. Check database::stat()
@@ -1536,7 +1567,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1536
1567
  $db2->close();
1537
1568
 
1538
1569
  // Normal open
1539
- $db2->connect(PROTOCOL . HOSTNAME . DBNAME, true);
1570
+ $db2->connect(URL_DB, true);
1540
1571
  $db2->open(URL, Bz\transactd::TYPE_SCHEMA_BDF, Bz\transactd::TD_OPEN_NORMAL);
1541
1572
  $this->assertEquals($db2->stat(), 0);
1542
1573
  $db2->close();
@@ -1834,13 +1865,13 @@ class transactdTest extends PHPUnit_Framework_TestCase
1834
1865
  public function testLogin()
1835
1866
  {
1836
1867
  $db = new Bz\database();
1837
- $db->connect(PROTOCOL . HOSTNAME);
1868
+ $db->connect(URL_HOST);
1838
1869
  $this->assertEquals($db->stat(), 0);
1839
1870
  if ($db->stat() == 0)
1840
1871
  {
1841
1872
  // second connection
1842
1873
  $db2 = new Bz\database();
1843
- $db2->connect(PROTOCOL . HOSTNAME, true);
1874
+ $db2->connect(URL_HOST, true);
1844
1875
  $this->assertEquals($db2->stat(), 0);
1845
1876
  unset($db2);
1846
1877
  $db->disconnect();
@@ -1858,7 +1889,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1858
1889
  $db->close();
1859
1890
  $this->assertEquals($db->stat(), 0);
1860
1891
  // true database name
1861
- $db->connect(PROTOCOL . HOSTNAME . DBNAME);
1892
+ $db->connect(URL_DB);
1862
1893
  $this->assertEquals($db->stat(), 0);
1863
1894
  if ($db->stat() == 0)
1864
1895
  {
@@ -1869,7 +1900,7 @@ class transactdTest extends PHPUnit_Framework_TestCase
1869
1900
  $this->dropDatabase($db);
1870
1901
  $db->disconnect();
1871
1902
  $this->assertEquals($db->stat(), 0);
1872
- $db->connect(PROTOCOL . HOSTNAME . DBNAME);
1903
+ $db->connect(URL_DB);
1873
1904
  $this->assertEquals($db->stat(), Bz\transactd::ERROR_NO_DATABASE);
1874
1905
  $db->disconnect();
1875
1906
  $this->assertEquals($db->stat(), 1);
@@ -2929,10 +2960,10 @@ class transactdTest extends PHPUnit_Framework_TestCase
2929
2960
  }
2930
2961
  private function insertQT($db, $maxId)
2931
2962
  {
2932
- $db->beginTrn();
2933
2963
  // insert user data
2934
2964
  $tb = $db->openTable('user', Bz\transactd::TD_OPEN_NORMAL);
2935
2965
  $this->assertEquals($db->stat(), 0);
2966
+ $db->beginTrn();
2936
2967
  $tb->clearBuffer();
2937
2968
  for ($i = 1; $i <= $maxId; $i++)
2938
2969
  {
@@ -2942,10 +2973,12 @@ class transactdTest extends PHPUnit_Framework_TestCase
2942
2973
  $tb->insert();
2943
2974
  $this->assertEquals($tb->stat(), 0);
2944
2975
  }
2976
+ $db->endTrn();
2945
2977
  $tb->close();
2946
2978
  // insert groups data
2947
2979
  $tb = $db->openTable('groups', Bz\transactd::TD_OPEN_NORMAL);
2948
2980
  $this->assertEquals($db->stat(), 0);
2981
+ $db->beginTrn();
2949
2982
  $tb->clearBuffer();
2950
2983
  for ($i = 1; $i <= 100; $i++)
2951
2984
  {
@@ -2954,10 +2987,12 @@ class transactdTest extends PHPUnit_Framework_TestCase
2954
2987
  $tb->insert();
2955
2988
  $this->assertEquals($tb->stat(), 0);
2956
2989
  }
2990
+ $db->endTrn();
2957
2991
  $tb->close();
2958
2992
  // insert extention data
2959
2993
  $tb = $db->openTable('extention', Bz\transactd::TD_OPEN_NORMAL);
2960
2994
  $this->assertEquals($db->stat(), 0);
2995
+ $db->beginTrn();
2961
2996
  $tb->clearBuffer();
2962
2997
  for ($i = 1; $i <= $maxId; $i++)
2963
2998
  {
@@ -3497,6 +3532,67 @@ class transactdTest extends PHPUnit_Framework_TestCase
3497
3532
  if ($tb->stat() != 0)
3498
3533
  $db->drop();
3499
3534
  }
3535
+
3536
+ public function testReadMore()
3537
+ {
3538
+ $db = new Bz\database();
3539
+ $db->open(URL_QT);
3540
+
3541
+ $this->assertEquals($db->stat(), 0);
3542
+ $atu = new Bz\activeTable($db, 'user');
3543
+ $atu->alias('名前', 'name');
3544
+ $q = new Bz\query();
3545
+
3546
+ //isStopAtLimit
3547
+ $this->assertEquals($q->isStopAtLimit(), 0);
3548
+ $q->select('id', 'name', 'group')
3549
+ ->where('name', '=', '1*')
3550
+ ->reject(70)->limit(8)->stopAtLimit(true);
3551
+ $this->assertEquals($q->isStopAtLimit(), true);
3552
+ $stmt1 = $atu->prepare($q);
3553
+ $this->assertEquals($atu->table()->stat(), 0);
3554
+ $this->assertNotEquals($stmt1, null);
3555
+ $rs = $atu->index(0)->keyValue(18)->read($stmt1);
3556
+ $this->assertEquals($rs->size(), 2);
3557
+
3558
+ //readMore
3559
+ $rs2 = $atu->readMore();
3560
+ $this->assertEquals($rs2->size(), 8);
3561
+ $rs->unionRecordset($rs2);
3562
+ $this->assertEquals($rs->size(), 10);
3563
+ }
3564
+
3565
+ public function testFirstLastGroupFunction()
3566
+ {
3567
+ $db = new Bz\database();
3568
+ $db->open(URL_QT);
3569
+ $this->assertEquals($db->stat(), 0);
3570
+
3571
+ $atu = new Bz\activeTable($db, 'user');
3572
+ $atu->alias('名前', 'name');
3573
+ $q = new Bz\query();
3574
+ $q->select('id', 'name', 'group')
3575
+ ->where('name', '=', '1*')
3576
+ ->reject(70)->limit(8)->stopAtLimit(true);
3577
+ $stmt1 = $atu->prepare($q);
3578
+ $this->assertNotEquals($stmt1, null);
3579
+
3580
+ $rs = $atu->index(0)->keyValue(0)->read($stmt1);
3581
+ $this->assertEquals($rs->size(), 8);
3582
+
3583
+ #grouping first and last
3584
+ $gq = new Bz\groupQuery();
3585
+ $target = new Bz\fieldNames();
3586
+ $target->addValue('name');
3587
+ $last = new Bz\last($target, 'last_rec_name');
3588
+ $first = new Bz\first($target, 'first_rec_name');
3589
+ $gq->addFunction($last);
3590
+ $gq->addFunction($first);
3591
+ $rs->groupBy($gq);
3592
+ $this->assertEquals($rs[0]['first_rec_name'], "1 user");
3593
+ $this->assertEquals($rs[0]['last_rec_name'], "16 user");
3594
+ }
3595
+
3500
3596
  public function testWritableRecord()
3501
3597
  {
3502
3598
  $db = new Bz\database();
@@ -22,8 +22,26 @@ mb_internal_encoding('UTF-8');
22
22
  require_once("transactd.php");
23
23
  use BizStation\Transactd as Bz;
24
24
 
25
- define("HOSTNAME", "localhost/");
26
- define("URL", "tdap://" . HOSTNAME . "test_blob?dbfile=test.bdf");
25
+ function getHost()
26
+ {
27
+ $host = getenv('TRANSACTD_PHPUNIT_HOST');
28
+ if (strlen($host) == 0)
29
+ {
30
+ $host = '127.0.0.1/';
31
+ }
32
+ if ($host[strlen($host) - 1] != '/')
33
+ {
34
+ $host = $host . '/';
35
+ }
36
+ return $host;
37
+ }
38
+
39
+ define("HOSTNAME", getHost());
40
+ define("USERNAME", getenv('TRANSACTD_PHPUNIT_USER'));
41
+ define("USERPART", strlen(USERNAME) == 0 ? '' : USERNAME . '@');
42
+ define("PASSWORD", getenv('TRANSACTD_PHPUNIT_PASS'));
43
+ define("PASSPART", strlen(PASSWORD) == 0 ? '' : '&pwd=' . PASSWORD);
44
+ define("URL", "tdap://" . USERPART . HOSTNAME . "test_blob?dbfile=test.bdf" . PASSPART);
27
45
  define("TABLENAME", "comments");
28
46
  define("FDI_ID", 0);
29
47
  define("FDI_USER_ID", 1);
@@ -219,9 +237,6 @@ class transactdBlobTest extends PHPUnit_Framework_TestCase
219
237
  // 3... but not found because filtered
220
238
  $tb->findNext(true);
221
239
  $this->assertEquals($tb->stat(), Bz\transactd::STATUS_EOF);
222
- // 2... but changing seek-direction is not allowed
223
- $tb->findPrev(true);
224
- $this->assertEquals($tb->stat(), Bz\transactd::STATUS_PROGRAM_ERROR);
225
240
  }
226
241
  public function testUpdate()
227
242
  {
@@ -289,6 +304,19 @@ class transactdBlobTest extends PHPUnit_Framework_TestCase
289
304
  $tb->seekNext();
290
305
  $this->assertEquals($tb->stat(), Bz\transactd::STATUS_EOF);
291
306
  }
307
+ public function testRecord()
308
+ {
309
+ $image = $this->getTestBinary();
310
+ $db = new Bz\database();
311
+ $this->openDatabase($db, URL);
312
+ $at = new Bz\ActiveTable($db, TABLENAME);
313
+ $q = new Bz\query();
314
+ $q->where('id', '=', 1);
315
+ $rs = $at->index(0)->keyValue(1)->read($q);
316
+ $this->assertEquals(count($rs), 1);
317
+ $f = $rs[0]->getField(FDI_IMAGE);
318
+ $this->assertEquals($f->getBin(), $image);
319
+ }
292
320
  public function testDrop()
293
321
  {
294
322
  $db = new Bz\database();
@@ -22,9 +22,27 @@ mb_internal_encoding('UTF-8');
22
22
  require_once("transactd.php");
23
23
  use BizStation\Transactd as Bz;
24
24
 
25
- define("HOSTNAME", "localhost/");
26
- define("URL", "tdap://" . HOSTNAME . "test?dbfile=test.bdf");
27
- define("URL_KANJI", "tdap://" . HOSTNAME . "テスト?dbfile=構成.bdf");
25
+ function getHost()
26
+ {
27
+ $host = getenv('TRANSACTD_PHPUNIT_HOST');
28
+ if (strlen($host) == 0)
29
+ {
30
+ $host = '127.0.0.1/';
31
+ }
32
+ if ($host[strlen($host) - 1] != '/')
33
+ {
34
+ $host = $host . '/';
35
+ }
36
+ return $host;
37
+ }
38
+
39
+ define("HOSTNAME", getHost());
40
+ define("USERNAME", getenv('TRANSACTD_PHPUNIT_USER'));
41
+ define("USERPART", strlen(USERNAME) == 0 ? '' : USERNAME . '@');
42
+ define("PASSWORD", getenv('TRANSACTD_PHPUNIT_PASS'));
43
+ define("PASSPART", strlen(PASSWORD) == 0 ? '' : '&pwd=' . PASSWORD);
44
+ define("URL", "tdap://" . USERPART . HOSTNAME . "test?dbfile=test.bdf" . PASSPART);
45
+ define("URL_KANJI", "tdap://" . USERPART . HOSTNAME . "テスト?dbfile=構成.bdf" . PASSPART);
28
46
  define("FDI_ID", 0);
29
47
  define("FDN_ID", "番号");
30
48
  define("FDI_NAME", 1);
@@ -22,12 +22,26 @@ mb_internal_encoding('UTF-8');
22
22
  require_once("transactd.php");
23
23
  use BizStation\Transactd as Bz;
24
24
 
25
+ function getHost()
26
+ {
27
+ $host = getenv('TRANSACTD_PHPUNIT_HOST');
28
+ if (strlen($host) == 0)
29
+ {
30
+ $host = '127.0.0.1';
31
+ }
32
+ return $host;
33
+ }
34
+
25
35
  define("PROTOCOL", 'tdap');
26
- define("HOSTNAME", 'localhost');
36
+ define("HOSTNAME", getHost());
37
+ define("USERNAME", getenv('TRANSACTD_PHPUNIT_USER'));
38
+ define("USERPART", strlen(USERNAME) == 0 ? '' : USERNAME . '@');
39
+ define("PASSWORD", getenv('TRANSACTD_PHPUNIT_PASS'));
40
+ define("PASSPART", strlen(PASSWORD) == 0 ? '' : '&pwd=' . PASSWORD);
27
41
  define("DBNAME", 'querytest');
28
42
  define("SCHEMANAME", 'test');
29
43
  define("BDFNAME", '?dbfile=' . SCHEMANAME . '.bdf');
30
- define("URL", PROTOCOL . '://' . HOSTNAME . '/' . DBNAME . BDFNAME);
44
+ define("URL", PROTOCOL . '://' . USERPART . HOSTNAME . '/' . DBNAME . BDFNAME . PASSPART);
31
45
  define("TABLENAME", 'user');
32
46
 
33
47
  // multi thread test if `php_pthreads` exists.
@@ -58,7 +72,7 @@ class transactdPoolTest extends PHPUnit_Framework_TestCase
58
72
  {
59
73
  $cp = new Bz\connectParams(URL);
60
74
  $this->assertEquals($cp->uri(), URL);
61
- $cp = new Bz\connectParams(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME);
75
+ $cp = new Bz\connectParams(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME, USERNAME, PASSWORD);
62
76
  $this->assertEquals($cp->uri(), URL);
63
77
  }
64
78
  public function testUse()
@@ -21,17 +21,24 @@
21
21
  require 'transactd'
22
22
  require 'base64'
23
23
 
24
+ def getEnv(valuename)
25
+ return ENV[valuename] if ENV[valuename] != nil
26
+ return ''
27
+ end
28
+
24
29
  def getHost()
25
- hostname = '127.0.0.1/'
26
- if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
27
- hostname = ENV['TRANSACTD_RSPEC_HOST']
28
- end
30
+ hostname = getEnv('TRANSACTD_RSPEC_HOST')
31
+ hostname = '127.0.0.1/' if hostname == ''
29
32
  hostname = hostname + '/' unless (hostname =~ /\/$/)
30
33
  return hostname
31
34
  end
32
35
 
33
36
  HOSTNAME = getHost()
34
- URL = 'tdap://' + HOSTNAME + 'test_blob?dbfile=test.bdf'
37
+ USERNAME = getEnv('TRANSACTD_RSPEC_USER')
38
+ USERPART = USERNAME == '' ? '' : USERNAME + '@'
39
+ PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
40
+ PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
41
+ URL = 'tdap://' + USERPART + HOSTNAME + 'test_blob?dbfile=test.bdf' + PASSPART
35
42
  TABLENAME = 'comments'
36
43
  FDI_ID = 0
37
44
  FDI_USER_ID = 1
@@ -234,9 +241,6 @@ describe Transactd, 'blob' do
234
241
  # 3... but not found because filtered
235
242
  tb.findNext(true)
236
243
  expect(tb.stat()).to eq Transactd::STATUS_EOF
237
- # 2... but changing seek-direction is not allowed
238
- tb.findPrev(true)
239
- expect(tb.stat()).to eq Transactd::STATUS_PROGRAM_ERROR
240
244
  db.close()
241
245
  end
242
246
 
@@ -322,6 +326,20 @@ describe Transactd, 'blob' do
322
326
  db.close()
323
327
  end
324
328
 
329
+ it 'use recordset' do
330
+ image = getTestBinary()
331
+ db = Transactd::Database.new()
332
+ openDatabase(db)
333
+ at = Transactd::ActiveTable.new(db, TABLENAME)
334
+ q = Transactd::Query.new()
335
+ q.where('id', '=', 1)
336
+ rs = at.index(0).keyValue(1).read(q)
337
+ expect(rs.count()).to eq 1
338
+ f = rs[0].getField(FDI_IMAGE);
339
+ expect(f.getBin()).to eq image
340
+ db.close()
341
+ end
342
+
325
343
  it 'drop' do
326
344
  db = Transactd::Database.new()
327
345
  dropDatabase(db)
@@ -23,18 +23,25 @@ require 'transactd'
23
23
  require 'rbconfig'
24
24
  IS_WINDOWS = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
25
25
 
26
+ def getEnv(valuename)
27
+ return ENV[valuename] if ENV[valuename] != nil
28
+ return ''
29
+ end
30
+
26
31
  def getHost()
27
- hostname = '127.0.0.1/'
28
- if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
29
- hostname = ENV['TRANSACTD_RSPEC_HOST']
30
- end
32
+ hostname = getEnv('TRANSACTD_RSPEC_HOST')
33
+ hostname = '127.0.0.1/' if hostname == ''
31
34
  hostname = hostname + '/' unless (hostname =~ /\/$/)
32
35
  return hostname
33
36
  end
34
37
 
35
38
  HOSTNAME = getHost()
36
- URL = 'tdap://' + HOSTNAME + 'test?dbfile=test.bdf'
37
- URL_KANJI = 'tdap://' + HOSTNAME + 'テスト?dbfile=構成.bdf'
39
+ USERNAME = getEnv('TRANSACTD_RSPEC_USER')
40
+ USERPART = USERNAME == '' ? '' : USERNAME + '@'
41
+ PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
42
+ PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
43
+ URL = 'tdap://' + USERPART + HOSTNAME + 'test?dbfile=test.bdf' + PASSPART
44
+ URL_KANJI = 'tdap://' + USERPART + HOSTNAME + 'テスト?dbfile=構成.bdf' + PASSPART
38
45
  FDI_ID = 0
39
46
  FDN_ID = '番号'.encode('UTF-8')
40
47
  FDI_NAME = 1
@@ -21,28 +21,34 @@
21
21
  require 'transactd'
22
22
  require 'thwait'
23
23
 
24
+ def getEnv(valuename)
25
+ return ENV[valuename] if ENV[valuename] != nil
26
+ return ''
27
+ end
28
+
24
29
  def getHost()
25
- hostname = '127.0.0.1/'
26
- if (ENV['TRANSACTD_RSPEC_HOST'] != nil && ENV['TRANSACTD_RSPEC_HOST'] != '')
27
- hostname = ENV['TRANSACTD_RSPEC_HOST']
28
- end
29
- hostname = hostname + '/' unless (hostname =~ /\/$/)
30
+ hostname = getEnv('TRANSACTD_RSPEC_HOST')
31
+ hostname = '127.0.0.1' if hostname == ''
30
32
  return hostname
31
33
  end
32
34
 
33
35
  PROTOCOL = 'tdap'
34
- HOSTNAME = getHost().sub(/\/$/, '')
36
+ HOSTNAME = getHost()
37
+ USERNAME = getEnv('TRANSACTD_RSPEC_USER')
38
+ USERPART = USERNAME == '' ? '' : USERNAME + '@'
39
+ PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
40
+ PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
35
41
  DBNAME = 'querytest'
36
42
  SCHEMANAME = 'test'
37
43
  BDFNAME = '?dbfile=' + SCHEMANAME + '.bdf'
38
- URL = PROTOCOL + '://' + HOSTNAME + '/' + DBNAME + BDFNAME
44
+ URL = PROTOCOL + '://' + USERPART + HOSTNAME + '/' + DBNAME + BDFNAME + PASSPART
39
45
  TABLENAME = 'user'
40
46
 
41
47
  describe Transactd, 'pool' do
42
48
  it 'create ConnectParams' do
43
49
  cp = Transactd::ConnectParams.new(URL)
44
50
  expect(cp.uri()).to eq URL
45
- cp = Transactd::ConnectParams.new(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME)
51
+ cp = Transactd::ConnectParams.new(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME, USERNAME, PASSWORD)
46
52
  expect(cp.uri()).to eq URL
47
53
  end
48
54