transactd 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/BUILD_UNIX-JA +6 -6
- data/README +20 -18
- data/README-JA +19 -17
- data/RELEASE_NOTE +144 -0
- data/RELEASE_NOTE-JA +153 -0
- data/bin/common/tdclc_32_2_3.dll +0 -0
- data/bin/common/tdclc_64_2_3.dll +0 -0
- data/build/common/get_ruby_path.cmake +1 -1
- data/build/swig/ruby/ruby.swg +10 -9
- data/build/swig/ruby/tdclrb_wrap.cpp +1416 -561
- data/build/swig/tdcl.i +30 -3
- data/build/tdclc/tdclc.cbproj +1 -1
- data/build/tdclc/tdclc.rc +4 -4
- data/build/tdclcpp/BUILDNUMBER.txt +1 -0
- data/build/tdclcpp/tdclcpp.rc +4 -4
- data/build/tdclcpp/tdclcpp_bc.cbproj +1 -1
- data/build/tdclrb/BUILDNUMBER.txt +1 -0
- data/build/tdclrb/tdclrb.rc +4 -4
- data/source/bzs/db/engine/mysql/database.cpp +85 -41
- data/source/bzs/db/engine/mysql/database.h +35 -5
- data/source/bzs/db/engine/mysql/mysqlInternal.h +189 -37
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +21 -21
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +11 -0
- data/source/bzs/db/protocol/tdap/client/activeTable.h +1 -1
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +11 -4
- data/source/bzs/db/protocol/tdap/client/client.h +30 -1
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +2 -1
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +35 -5
- data/source/bzs/db/protocol/tdap/client/field.cpp +100 -51
- data/source/bzs/db/protocol/tdap/client/field.h +7 -7
- data/source/bzs/db/protocol/tdap/client/filter.h +20 -6
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +337 -58
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +56 -13
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +83 -5
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +2 -2
- data/source/bzs/db/protocol/tdap/client/nsTable.h +2 -1
- data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +20 -6
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +7 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +8 -4
- data/source/bzs/db/protocol/tdap/client/request.h +11 -1
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +40 -2
- data/source/bzs/db/protocol/tdap/client/serializer.h +4 -2
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +1 -0
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +4 -4
- data/source/bzs/db/protocol/tdap/client/table.cpp +124 -71
- data/source/bzs/db/protocol/tdap/client/table.h +8 -7
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +33 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +1 -1
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +3 -1
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +20 -4
- data/source/bzs/db/protocol/tdap/mysql/request.h +14 -0
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +132 -69
- data/source/bzs/db/protocol/tdap/tdapRequest.h +18 -4
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +32 -22
- data/source/bzs/db/protocol/tdap/tdapSchema.h +69 -4
- data/source/bzs/db/protocol/tdap/tdapcapi.h +13 -5
- data/source/bzs/db/protocol/tdap/uri.h +4 -4
- data/source/bzs/db/transactd/transactd.cpp +6 -5
- data/source/bzs/env/crosscompile.cpp +17 -0
- data/source/bzs/env/crosscompile.h +4 -1
- data/source/bzs/env/mbcswchrLinux.cpp +3 -0
- data/source/bzs/example/deleteRecords.cpp +13 -0
- data/source/bzs/example/deleteRecords_c.cpp +8 -1
- data/source/bzs/example/insertRecords.cpp +14 -0
- data/source/bzs/example/insertRecords_c.cpp +8 -1
- data/source/bzs/example/ormap_c.cpp +8 -1
- data/source/bzs/example/queryData.cpp +92 -2
- data/source/bzs/example/queryData.h +3 -1
- data/source/bzs/example/readRecords.cpp +13 -0
- data/source/bzs/example/readRecords_c.cpp +8 -1
- data/source/bzs/example/updateRecords.cpp +13 -0
- data/source/bzs/example/updateRecords_c.cpp +8 -1
- data/source/bzs/example/update_with_transaction.cpp +13 -0
- data/source/bzs/example/update_with_transaction_c.cpp +8 -1
- data/source/bzs/example/useORMRecord.cpp +9 -3
- data/source/bzs/netsvc/client/iconnection.h +8 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +61 -16
- data/source/bzs/netsvc/client/tcpClient.h +430 -214
- data/source/bzs/netsvc/server/serverPipe.cpp +2 -2
- data/source/bzs/test/tdclphp/transactd_Test.php +115 -19
- data/source/bzs/test/tdclphp/transactd_blob_Test.php +33 -5
- data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +21 -3
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +17 -3
- data/source/bzs/test/tdclrb/transactd_blob_spec.rb +26 -8
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +13 -6
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +14 -8
- data/source/bzs/test/tdclrb/transactd_spec.rb +117 -27
- data/source/bzs/test/transactdBench/scaling_bench.cpp +5 -5
- data/source/bzs/test/transactdBench/workerBase.h +2 -2
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +898 -51
- data/source/global/tdclatl/Database.cpp +12 -0
- data/source/global/tdclatl/Database.h +4 -0
- data/source/global/tdclatl/FieldDef.cpp +19 -0
- data/source/global/tdclatl/FieldDef.h +4 -0
- data/source/global/tdclatl/FieldDefs.cpp +14 -16
- data/source/global/tdclatl/GroupQuery.cpp +21 -16
- data/source/global/tdclatl/GroupQuery.h +1 -1
- data/source/global/tdclatl/QueryBase.cpp +14 -0
- data/source/global/tdclatl/QueryBase.h +2 -0
- data/source/global/tdclatl/Record.cpp +41 -10
- data/source/global/tdclatl/Record.h +1 -1
- data/source/global/tdclatl/Recordset.cpp +117 -31
- data/source/global/tdclatl/Recordset.h +6 -5
- data/source/global/tdclatl/Table.cpp +24 -28
- data/source/global/tdclatl/Table.h +3 -4
- data/source/global/tdclatl/activeTable.cpp +149 -103
- data/source/global/tdclatl/activeTable.h +1 -1
- data/source/global/tdclatl/tdclatl.idl +38 -18
- data/transactd.gemspec +1 -1
- metadata +8 -4
- data/bin/common/tdclc_32_2_2.dll +0 -0
- 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
|
-
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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(
|
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
|
-
|
26
|
-
|
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
|
-
|
26
|
-
|
27
|
-
|
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",
|
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 = '
|
26
|
-
|
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
|
-
|
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 = '
|
28
|
-
|
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
|
-
|
37
|
-
|
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 = '
|
26
|
-
|
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()
|
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
|
|