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
|
@@ -23,16 +23,24 @@ 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()
|
|
39
|
+
USERNAME = getEnv('TRANSACTD_RSPEC_USER')
|
|
40
|
+
USERPART = USERNAME == '' ? '' : USERNAME + '@'
|
|
41
|
+
PASSWORD = getEnv('TRANSACTD_RSPEC_PASS')
|
|
42
|
+
PASSPART = PASSWORD == '' ? '' : '&pwd=' + PASSWORD
|
|
43
|
+
PASSPART2 = PASSWORD == '' ? '' : '?pwd=' + PASSWORD
|
|
36
44
|
DBNAME = 'test'
|
|
37
45
|
DBNAME_VAR = 'testvar'
|
|
38
46
|
DBNAME_SF = 'testString'
|
|
@@ -40,10 +48,12 @@ DBNAME_QT = 'querytest'
|
|
|
40
48
|
TABLENAME = 'user'
|
|
41
49
|
PROTOCOL = 'tdap://'
|
|
42
50
|
BDFNAME = '?dbfile=test.bdf'
|
|
43
|
-
URL = PROTOCOL + HOSTNAME + DBNAME + BDFNAME
|
|
44
|
-
URL_VAR = PROTOCOL + HOSTNAME + DBNAME_VAR + BDFNAME
|
|
45
|
-
URL_SF = PROTOCOL + HOSTNAME + DBNAME_SF + BDFNAME
|
|
46
|
-
URL_QT = PROTOCOL + HOSTNAME + DBNAME_QT + BDFNAME
|
|
51
|
+
URL = PROTOCOL + USERPART + HOSTNAME + DBNAME + BDFNAME + PASSPART
|
|
52
|
+
URL_VAR = PROTOCOL + USERPART + HOSTNAME + DBNAME_VAR + BDFNAME + PASSPART
|
|
53
|
+
URL_SF = PROTOCOL + USERPART + HOSTNAME + DBNAME_SF + BDFNAME + PASSPART
|
|
54
|
+
URL_QT = PROTOCOL + USERPART + HOSTNAME + DBNAME_QT + BDFNAME + PASSPART
|
|
55
|
+
URL_HOST = PROTOCOL + USERPART + HOSTNAME + PASSPART2
|
|
56
|
+
URL_DB = PROTOCOL + USERPART + HOSTNAME + DBNAME + PASSPART2
|
|
47
57
|
FDI_ID = 0
|
|
48
58
|
FDI_NAME = 1
|
|
49
59
|
FDI_GROUP = 2
|
|
@@ -97,8 +107,18 @@ def testCreateTable(db)
|
|
|
97
107
|
|
|
98
108
|
fd = dbdef.insertField(1, 1)
|
|
99
109
|
fd.setName('name')
|
|
100
|
-
fd.type = Transactd::Ft_zstring
|
|
101
110
|
fd.len = 33
|
|
111
|
+
|
|
112
|
+
#test padChar
|
|
113
|
+
fd.type = Transactd::Ft_string
|
|
114
|
+
fd.setPadCharSettings(true, false)
|
|
115
|
+
expect(fd.usePadChar()).to eq true;
|
|
116
|
+
expect(fd.trimPadChar()).to eq false;
|
|
117
|
+
fd.setPadCharSettings(false, true)
|
|
118
|
+
expect(fd.usePadChar()).to eq false;
|
|
119
|
+
expect(fd.trimPadChar()).to eq true;
|
|
120
|
+
|
|
121
|
+
fd.type = Transactd::Ft_zstring
|
|
102
122
|
dbdef.updateTableDef(1)
|
|
103
123
|
expect(dbdef.stat()).to eq 0
|
|
104
124
|
|
|
@@ -183,7 +203,7 @@ end
|
|
|
183
203
|
|
|
184
204
|
def testVersion()
|
|
185
205
|
db = Transactd::Database.new()
|
|
186
|
-
db.connect(
|
|
206
|
+
db.connect(URL_HOST)
|
|
187
207
|
expect(db.stat()).to eq 0
|
|
188
208
|
vv = Transactd::BtrVersions.new()
|
|
189
209
|
db.getBtrVersion(vv)
|
|
@@ -623,7 +643,7 @@ def testSnapshot()
|
|
|
623
643
|
expect(db.stat()).to eq 0
|
|
624
644
|
expect(tbg).not_to be nil
|
|
625
645
|
db2 = Transactd::Database.new()
|
|
626
|
-
db2.connect(
|
|
646
|
+
db2.connect(URL_DB, true)
|
|
627
647
|
expect(db2.stat()).to eq 0
|
|
628
648
|
tb2 = testOpenTable(db2)
|
|
629
649
|
expect(tb2).not_to be nil
|
|
@@ -753,7 +773,7 @@ def testTransactionLockRepeatable()
|
|
|
753
773
|
tb = testOpenTable(db)
|
|
754
774
|
expect(tb).not_to be nil
|
|
755
775
|
db2 = Transactd::Database.new()
|
|
756
|
-
db2.connect(
|
|
776
|
+
db2.connect(URL_DB, true)
|
|
757
777
|
expect(db2.stat()).to eq 0
|
|
758
778
|
tb2 = testOpenTable(db2)
|
|
759
779
|
expect(tb2).not_to be nil
|
|
@@ -984,7 +1004,7 @@ def testTransactionLockReadCommited()
|
|
|
984
1004
|
tb = testOpenTable(db)
|
|
985
1005
|
expect(tb).not_to be nil
|
|
986
1006
|
db2 = Transactd::Database.new()
|
|
987
|
-
db2.connect(
|
|
1007
|
+
db2.connect(URL_DB, true)
|
|
988
1008
|
expect(db2.stat()).to eq 0
|
|
989
1009
|
tb2 = testOpenTable(db2)
|
|
990
1010
|
expect(tb2).not_to be nil
|
|
@@ -1249,7 +1269,7 @@ def testRecordLock()
|
|
|
1249
1269
|
tb = testOpenTable(db)
|
|
1250
1270
|
expect(tb).not_to be nil
|
|
1251
1271
|
db2 = Transactd::Database.new()
|
|
1252
|
-
db2.connect(
|
|
1272
|
+
db2.connect(URL_DB, true)
|
|
1253
1273
|
expect(db2.stat()).to eq 0
|
|
1254
1274
|
tb2 = testOpenTable(db2)
|
|
1255
1275
|
expect(tb2).not_to be nil
|
|
@@ -1385,7 +1405,7 @@ def testConflict()
|
|
|
1385
1405
|
db = Transactd::Database.new()
|
|
1386
1406
|
tb = testOpenTable(db)
|
|
1387
1407
|
db2 = Transactd::Database.new()
|
|
1388
|
-
db2.connect(
|
|
1408
|
+
db2.connect(URL_DB, true)
|
|
1389
1409
|
expect(db2.stat()).to eq 0
|
|
1390
1410
|
expect(tb).not_to be nil
|
|
1391
1411
|
tb2 = testOpenTable(db2)
|
|
@@ -1444,7 +1464,7 @@ def testExclusive()
|
|
|
1444
1464
|
|
|
1445
1465
|
# Can not open database from other connections.
|
|
1446
1466
|
db2 = Transactd::Database.new()
|
|
1447
|
-
db2.connect(
|
|
1467
|
+
db2.connect(URL_DB, true)
|
|
1448
1468
|
expect(db2.stat()).to eq 0
|
|
1449
1469
|
db2.open(URL, Transactd::TYPE_SCHEMA_BDF)
|
|
1450
1470
|
# database open error. Check database::stat()
|
|
@@ -1467,7 +1487,7 @@ def testExclusive()
|
|
|
1467
1487
|
db2.close()
|
|
1468
1488
|
|
|
1469
1489
|
# Normal open
|
|
1470
|
-
db2.connect(
|
|
1490
|
+
db2.connect(URL_DB, true)
|
|
1471
1491
|
db2.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
|
1472
1492
|
expect(db2.stat()).to eq 0
|
|
1473
1493
|
db2.close()
|
|
@@ -1629,7 +1649,7 @@ def testMissingUpdate()
|
|
|
1629
1649
|
# Get lock(X) same record in parallel.
|
|
1630
1650
|
w = Thread.new {
|
|
1631
1651
|
db2 = Transactd::Database.new()
|
|
1632
|
-
db2.connect(
|
|
1652
|
+
db2.connect(URL_DB, true)
|
|
1633
1653
|
expect(db2.stat()).to eq 0
|
|
1634
1654
|
db2.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
|
1635
1655
|
expect(db2.stat()).to eq 0
|
|
@@ -1643,7 +1663,7 @@ def testMissingUpdate()
|
|
|
1643
1663
|
db2.close()
|
|
1644
1664
|
v2
|
|
1645
1665
|
}
|
|
1646
|
-
sleep(0.
|
|
1666
|
+
sleep(0.5)
|
|
1647
1667
|
v = tb.getFVint(FDI_ID)
|
|
1648
1668
|
v = v + 1
|
|
1649
1669
|
tb.setFV(FDI_ID, v)
|
|
@@ -1673,7 +1693,7 @@ def testMissingUpdate()
|
|
|
1673
1693
|
# Get lock(X) same record in parallel.
|
|
1674
1694
|
w = Thread.new {
|
|
1675
1695
|
db2 = Transactd::Database.new()
|
|
1676
|
-
db2.connect(
|
|
1696
|
+
db2.connect(URL_DB, true)
|
|
1677
1697
|
expect(db2.stat()).to eq 0
|
|
1678
1698
|
db2.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
|
1679
1699
|
expect(db2.stat()).to eq 0
|
|
@@ -1688,7 +1708,7 @@ def testMissingUpdate()
|
|
|
1688
1708
|
db2.close()
|
|
1689
1709
|
v2
|
|
1690
1710
|
}
|
|
1691
|
-
sleep(0.
|
|
1711
|
+
sleep(0.5)
|
|
1692
1712
|
v = tb.getFVint(FDI_ID)
|
|
1693
1713
|
tb.del()
|
|
1694
1714
|
v2 = w.join().value
|
|
@@ -1787,12 +1807,12 @@ end
|
|
|
1787
1807
|
|
|
1788
1808
|
def testLogin()
|
|
1789
1809
|
db = Transactd::Database.new()
|
|
1790
|
-
db.connect(
|
|
1810
|
+
db.connect(URL_HOST)
|
|
1791
1811
|
expect(db.stat()).to eq 0
|
|
1792
1812
|
if db.stat() == 0
|
|
1793
1813
|
# second connection
|
|
1794
1814
|
db2 = Transactd::Database.new()
|
|
1795
|
-
db2.connect(
|
|
1815
|
+
db2.connect(URL_HOST, true)
|
|
1796
1816
|
expect(db2.stat()).to eq 0
|
|
1797
1817
|
db2.disconnect()
|
|
1798
1818
|
db.disconnect()
|
|
@@ -1811,7 +1831,7 @@ def testLogin()
|
|
|
1811
1831
|
db.close()
|
|
1812
1832
|
expect(db.stat()).to eq 0
|
|
1813
1833
|
# true database name
|
|
1814
|
-
db.connect(
|
|
1834
|
+
db.connect(URL_DB)
|
|
1815
1835
|
expect(db.stat()).to eq 0
|
|
1816
1836
|
if (db.stat() == 0)
|
|
1817
1837
|
db.disconnect()
|
|
@@ -1821,7 +1841,7 @@ def testLogin()
|
|
|
1821
1841
|
testDropDatabase(db)
|
|
1822
1842
|
db.disconnect()
|
|
1823
1843
|
expect(db.stat()).to eq 0
|
|
1824
|
-
db.connect(
|
|
1844
|
+
db.connect(URL_DB)
|
|
1825
1845
|
expect(db.stat()).to eq (Transactd::ERROR_NO_DATABASE)
|
|
1826
1846
|
db.disconnect()
|
|
1827
1847
|
expect(db.stat()).to eq 1
|
|
@@ -2835,11 +2855,11 @@ def createQTextention(db)
|
|
|
2835
2855
|
end
|
|
2836
2856
|
|
|
2837
2857
|
def insertQT(db, maxId)
|
|
2838
|
-
db.beginTrn()
|
|
2839
2858
|
# insert user data
|
|
2840
2859
|
tb = db.openTable('user', Transactd::TD_OPEN_NORMAL)
|
|
2841
2860
|
expect(db.stat()).to eq 0
|
|
2842
2861
|
expect(tb).not_to be nil
|
|
2862
|
+
db.beginTrn()
|
|
2843
2863
|
tb.clearBuffer()
|
|
2844
2864
|
for i in 1..maxId
|
|
2845
2865
|
tb.setFV(0, i)
|
|
@@ -2848,11 +2868,13 @@ def insertQT(db, maxId)
|
|
|
2848
2868
|
tb.insert()
|
|
2849
2869
|
expect(tb.stat()).to eq 0
|
|
2850
2870
|
end
|
|
2871
|
+
db.endTrn()
|
|
2851
2872
|
tb.close()
|
|
2852
2873
|
# insert groups data
|
|
2853
2874
|
tb = db.openTable('groups', Transactd::TD_OPEN_NORMAL)
|
|
2854
2875
|
expect(db.stat()).to eq 0
|
|
2855
2876
|
expect(tb).not_to be nil
|
|
2877
|
+
db.beginTrn()
|
|
2856
2878
|
tb.clearBuffer()
|
|
2857
2879
|
for i in 1..100
|
|
2858
2880
|
tb.setFV(0, i)
|
|
@@ -2860,11 +2882,13 @@ def insertQT(db, maxId)
|
|
|
2860
2882
|
tb.insert()
|
|
2861
2883
|
expect(tb.stat()).to eq 0
|
|
2862
2884
|
end
|
|
2885
|
+
db.endTrn()
|
|
2863
2886
|
tb.close()
|
|
2864
2887
|
# insert extention data
|
|
2865
2888
|
tb = db.openTable('extention', Transactd::TD_OPEN_NORMAL)
|
|
2866
2889
|
expect(db.stat()).to eq 0
|
|
2867
2890
|
expect(tb).not_to be nil
|
|
2891
|
+
db.beginTrn()
|
|
2868
2892
|
tb.clearBuffer()
|
|
2869
2893
|
for i in 1..maxId
|
|
2870
2894
|
tb.setFV(0, i)
|
|
@@ -2873,8 +2897,8 @@ def insertQT(db, maxId)
|
|
|
2873
2897
|
tb.insert()
|
|
2874
2898
|
expect(tb.stat()).to eq 0
|
|
2875
2899
|
end
|
|
2876
|
-
tb.close()
|
|
2877
2900
|
db.endTrn()
|
|
2901
|
+
tb.close()
|
|
2878
2902
|
end
|
|
2879
2903
|
|
|
2880
2904
|
def testCreateQueryTest()
|
|
@@ -2931,6 +2955,8 @@ def testNewDelete()
|
|
|
2931
2955
|
a = Transactd::Avg.new(fns)
|
|
2932
2956
|
mi = Transactd::Min.new(fns)
|
|
2933
2957
|
ma = Transactd::Max.new(fns)
|
|
2958
|
+
la = Transactd::Last.new(fns)
|
|
2959
|
+
fa = Transactd::First.new(fns)
|
|
2934
2960
|
rs = Transactd::Recordset.new()
|
|
2935
2961
|
# have to explicitly release
|
|
2936
2962
|
atu.release()
|
|
@@ -3284,6 +3310,64 @@ def testServerPrepareJoin()
|
|
|
3284
3310
|
db.close()
|
|
3285
3311
|
end
|
|
3286
3312
|
|
|
3313
|
+
def testReadMore()
|
|
3314
|
+
db = Transactd::Database.new()
|
|
3315
|
+
db.open(URL_QT)
|
|
3316
|
+
expect(db.stat()).to eq 0
|
|
3317
|
+
|
|
3318
|
+
atu = Transactd::ActiveTable.new(db, 'user')
|
|
3319
|
+
atu.alias('名前', 'name')
|
|
3320
|
+
q = Transactd::Query.new()
|
|
3321
|
+
|
|
3322
|
+
#isStopAtLimit
|
|
3323
|
+
expect(q.isStopAtLimit()).to eq false
|
|
3324
|
+
|
|
3325
|
+
q.select('id', 'name', 'group')
|
|
3326
|
+
.where('name', '=', '1*')
|
|
3327
|
+
.reject(70).limit(8).stopAtLimit(true)
|
|
3328
|
+
expect(q.isStopAtLimit()).to eq true
|
|
3329
|
+
|
|
3330
|
+
stmt1 = atu.prepare(q)
|
|
3331
|
+
expect(stmt1).not_to eq nil
|
|
3332
|
+
rs = atu.index(0).keyValue(18).read(stmt1)
|
|
3333
|
+
expect(rs.size()).to eq 2
|
|
3334
|
+
|
|
3335
|
+
#readMore
|
|
3336
|
+
rs2 = atu.readMore()
|
|
3337
|
+
expect(rs2.size()).to eq 8
|
|
3338
|
+
rs.unionRecordset(rs2)
|
|
3339
|
+
expect(rs.size()).to eq 10
|
|
3340
|
+
end
|
|
3341
|
+
|
|
3342
|
+
def testFirstLastGroupFunction()
|
|
3343
|
+
db = Transactd::Database.new()
|
|
3344
|
+
db.open(URL_QT)
|
|
3345
|
+
expect(db.stat()).to eq 0
|
|
3346
|
+
|
|
3347
|
+
atu = Transactd::ActiveTable.new(db, 'user')
|
|
3348
|
+
atu.alias('名前', 'name')
|
|
3349
|
+
q = Transactd::Query.new()
|
|
3350
|
+
q.select('id', 'name', 'group')
|
|
3351
|
+
.where('name', '=', '1*')
|
|
3352
|
+
.reject(70).limit(8).stopAtLimit(true)
|
|
3353
|
+
stmt1 = atu.prepare(q)
|
|
3354
|
+
expect(stmt1).not_to eq nil
|
|
3355
|
+
rs = atu.index(0).keyValue(0).read(stmt1)
|
|
3356
|
+
expect(rs.size()).to eq 8
|
|
3357
|
+
|
|
3358
|
+
#grouping first and last
|
|
3359
|
+
gq = Transactd::GroupQuery.new()
|
|
3360
|
+
target = Transactd::FieldNames.new()
|
|
3361
|
+
target.addValue('name');
|
|
3362
|
+
last = Transactd::Last.new(target, 'last_rec_name')
|
|
3363
|
+
first = Transactd::First.new(target, 'first_rec_name')
|
|
3364
|
+
gq.addFunction(last);
|
|
3365
|
+
gq.addFunction(first);
|
|
3366
|
+
rs.groupBy(gq);
|
|
3367
|
+
expect(rs[0]['first_rec_name']).to eq "1 user";
|
|
3368
|
+
expect(rs[0]['last_rec_name']).to eq "16 user";
|
|
3369
|
+
end
|
|
3370
|
+
|
|
3287
3371
|
def testWirtableRecord()
|
|
3288
3372
|
db = Transactd::Database.new()
|
|
3289
3373
|
db.open(URL_QT)
|
|
@@ -3474,6 +3558,12 @@ describe Transactd do
|
|
|
3474
3558
|
it 'activetable and prepare (server)' do
|
|
3475
3559
|
testServerPrepareJoin()
|
|
3476
3560
|
end
|
|
3561
|
+
it 'activetable and readMore' do
|
|
3562
|
+
testReadMore()
|
|
3563
|
+
end
|
|
3564
|
+
it 'Grouping and first and last' do
|
|
3565
|
+
testFirstLastGroupFunction()
|
|
3566
|
+
end
|
|
3477
3567
|
it 'write with writableRecord' do
|
|
3478
3568
|
testWirtableRecord()
|
|
3479
3569
|
end
|
|
@@ -52,7 +52,7 @@ struct commandLineParam
|
|
|
52
52
|
avg_count = _ttol(argv[5]);
|
|
53
53
|
stressMode = (loopCount == -1) ? true : false;
|
|
54
54
|
if (stressMode)
|
|
55
|
-
loopCount =
|
|
55
|
+
loopCount = 10;
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
58
|
|
|
@@ -123,7 +123,7 @@ void makeMysqlParam(bzs::test::worker::mysql::connectParam& param,
|
|
|
123
123
|
param.port = 0;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
#define BENCH_TIMER_SECONDS
|
|
126
|
+
#define BENCH_TIMER_SECONDS 2.0f
|
|
127
127
|
double executeWorkers(const commandLineParam& cmd, const connectParams param,
|
|
128
128
|
const bzs::test::worker::mysql::connectParam& paramMysql,
|
|
129
129
|
int wn)
|
|
@@ -151,11 +151,11 @@ double executeWorkers(const commandLineParam& cmd, const connectParams param,
|
|
|
151
151
|
}
|
|
152
152
|
printf("*");
|
|
153
153
|
fflush(stdout);
|
|
154
|
-
Sleep(
|
|
154
|
+
Sleep(1000);
|
|
155
155
|
sync.wait(); // start all workers
|
|
156
156
|
if (cmd.stressMode)
|
|
157
157
|
{
|
|
158
|
-
Sleep(
|
|
158
|
+
Sleep(500);
|
|
159
159
|
g_bench_signal = BENCH_SIGNAL_GREEN;
|
|
160
160
|
//Measurement interval
|
|
161
161
|
Sleep((unsigned int)(BENCH_TIMER_SECONDS * 1000));
|
|
@@ -184,7 +184,7 @@ int execute(const commandLineParam& cmd, const connectParams param,
|
|
|
184
184
|
if (cmd.stressMode)
|
|
185
185
|
{
|
|
186
186
|
if (t)
|
|
187
|
-
ts.value = (__int64)(t / BENCH_TIMER_SECONDS);
|
|
187
|
+
ts.value = (__int64)(t / BENCH_TIMER_SECONDS) * cmd.loopCount;
|
|
188
188
|
}
|
|
189
189
|
else
|
|
190
190
|
{
|
|
@@ -92,7 +92,7 @@ public:
|
|
|
92
92
|
else if (g_bench_signal == BENCH_SIGNAL_BLUE)
|
|
93
93
|
{
|
|
94
94
|
m_bresult = bm.end();
|
|
95
|
-
dummyWork();
|
|
95
|
+
//dummyWork();
|
|
96
96
|
break;
|
|
97
97
|
}
|
|
98
98
|
}
|
|
@@ -116,7 +116,7 @@ public:
|
|
|
116
116
|
else if (g_bench_signal == BENCH_SIGNAL_BLUE)
|
|
117
117
|
{
|
|
118
118
|
m_bresult = bm.end();
|
|
119
|
-
dummyWork();
|
|
119
|
+
//dummyWork();
|
|
120
120
|
break;
|
|
121
121
|
}
|
|
122
122
|
}
|