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.
- 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
|
|