transactd 2.2.0 → 2.3.0

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