transactd 1.2.0-x86-mswin32-100 → 2.0.0-x86-mswin32-100
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 +46 -67
- data/BUILD_WIN-JA +106 -63
- data/CMakeLists.txt +40 -15
- data/README +219 -75
- data/README-JA +207 -76
- data/README_ORMSRCGEN +118 -0
- data/README_ORMSRCGEN-JA +115 -0
- data/bin/1.9/transactd.so +0 -0
- data/bin/2.0/transactd.so +0 -0
- data/bin/common/tdclc_32_2_0.dll +0 -0
- data/bin/common/tdclcpp_vc100_32mr_2_0.dll +0 -0
- data/build/tdclrb/bldgem/extconf.rb +28 -3
- data/build/tdclrb/gem/helper.rb +11 -1
- data/index_ja.html +15 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
- data/source/bzs/test/tdclrb/prepare.rb +15 -12
- data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
- data/transactd.gemspec +24 -16
- metadata +9 -5
- data/bin/common/tdclc_32_1_2.dll +0 -0
- data/bin/common/tdclcpp_vc100_32m_1_2.dll +0 -0
@@ -33,7 +33,7 @@ ruby_exe_path = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_ins
|
|
33
33
|
# use prebuilt binary
|
34
34
|
#
|
35
35
|
if has_binary(transactd_gem_root)
|
36
|
-
make_makefile_prebuilt_win32(ruby_bin_path, transactd_gem_root) if RUBY_PLATFORM =~ /mswin/
|
36
|
+
make_makefile_prebuilt_win32(ruby_bin_path, transactd_gem_root) if RUBY_PLATFORM =~ /mswin/ || RUBY_PLATFORM =~ /mingw/
|
37
37
|
exit
|
38
38
|
end
|
39
39
|
|
@@ -54,6 +54,8 @@ generator = arg_config('--generator', '').gsub(/"\n/, '')
|
|
54
54
|
ruby_include_dirs = arg_config('--ruby_include_dirs', '').gsub(/"\n/, '')
|
55
55
|
ruby_library_path = arg_config('--ruby_library_path', '').gsub(/"\n/, '')
|
56
56
|
install_prefix = arg_config('--install_prefix', '').gsub(/"\n/, '')
|
57
|
+
build_type = arg_config('--build_type', '').gsub(/"\n/, '')
|
58
|
+
no_rb_tbr = arg_config('--without_rb_thread_blocking_region', '').gsub(/"\n/, '').downcase
|
57
59
|
|
58
60
|
# boost
|
59
61
|
if boost != '' && boost !=~ /^\-DBOOST_ROOT/
|
@@ -81,7 +83,9 @@ end
|
|
81
83
|
|
82
84
|
# ruby_library_path
|
83
85
|
if ruby_library_path != '' && ruby_library_path !=~ /^\-DRUBY_SWIG_LIBRARY_PATH/
|
84
|
-
|
86
|
+
lib_path = to_slash_path(ruby_library_path)
|
87
|
+
$LDFLAGS = $LDFLAGS + ' -libpath:' + File.dirname(lib_path)
|
88
|
+
ruby_library_path = '-DTRANSACTD_RUBY_LIBRARY_PATH="' + lib_path + '"'
|
85
89
|
end
|
86
90
|
|
87
91
|
# install_prefix
|
@@ -89,6 +93,15 @@ if install_prefix != '' && install_prefix !=~ /^\-DCMAKE_INSTALL_PREFIX/
|
|
89
93
|
install_prefix = '-DTRANSACTD_CLIENTS_PREFIX="' + to_slash_path(install_prefix) + '"'
|
90
94
|
end
|
91
95
|
|
96
|
+
# build_type
|
97
|
+
if build_type !=~ /^\-DCMAKE_BUILD_TYPE/
|
98
|
+
if build_type != ''
|
99
|
+
build_type = '-DCMAKE_BUILD_TYPE=' + build_type
|
100
|
+
else
|
101
|
+
build_type = '-DCMAKE_BUILD_TYPE=Release'
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
92
105
|
# ruby executable path
|
93
106
|
ruby_executable = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
|
94
107
|
ruby_executable = '-DTRANSACTD_RUBY_EXECUTABLE_PATH="' + to_slash_path(ruby_executable) + '"'
|
@@ -96,10 +109,22 @@ ruby_executable = '-DTRANSACTD_RUBY_EXECUTABLE_PATH="' + to_slash_path(ruby_exec
|
|
96
109
|
# output dir
|
97
110
|
gem_root = '-DTRANSACTD_RUBY_GEM_ROOT_PATH="' + to_slash_path(transactd_gem_root) + '"'
|
98
111
|
|
112
|
+
# rb_thread_blocking_region or rb_thread_call_without_gvl
|
113
|
+
use_TCWOG = have_func('rb_thread_call_without_gvl', 'ruby/thread.h')
|
114
|
+
use_TBR = (! use_TCWOG) && have_func('rb_thread_blocking_region')
|
115
|
+
if no_rb_tbr != '' && no_rb_tbr != 'off'
|
116
|
+
use_TCWOG = false
|
117
|
+
use_TBR = false
|
118
|
+
end
|
119
|
+
rb_tbr = ' -DTRANSACTD_HAVE_RB_THREAD_CALL_WITHOUT_GVL=' +
|
120
|
+
(use_TCWOG ? 'ON' : 'OFF') +
|
121
|
+
' -DTRANSACTD_HAVE_RB_THREAD_BLOCKING_REGION=' +
|
122
|
+
(use_TBR ? 'ON' : 'OFF')
|
123
|
+
|
99
124
|
# cmake
|
100
125
|
cmake_cmd = ['cmake', to_native_path(transactd_gem_root_relative), '-DTRANSACTD_RUBY_GEM=ON',
|
101
126
|
generator, boost, ruby_executable, ruby_library_path, ruby_include_dirs,
|
102
|
-
install_prefix, gem_root, '>> cmake_generate.log'].join(' ')
|
127
|
+
install_prefix, gem_root, build_type, rb_tbr, '>> cmake_generate.log'].join(' ')
|
103
128
|
begin
|
104
129
|
f = open('cmake_generate.log', 'w')
|
105
130
|
f.puts cmake_cmd
|
data/build/tdclrb/gem/helper.rb
CHANGED
@@ -53,7 +53,7 @@ def get_common_binary_files(transactd_gem_root)
|
|
53
53
|
windows_bitness = get_windows_bitness()
|
54
54
|
ruby_bitness = 32 if windows_bitness == 32
|
55
55
|
bin_files = Dir.glob(File.join(transactd_gem_root, 'bin/common/tdclc_' + ruby_bitness.to_s + '_*.dll'))
|
56
|
-
bin_files += Dir.glob(File.join(transactd_gem_root, 'bin/common/tdclcpp_*_' + ruby_bitness.to_s + '
|
56
|
+
bin_files += Dir.glob(File.join(transactd_gem_root, 'bin/common/tdclcpp_*_' + ruby_bitness.to_s + 'mr_*.dll'))
|
57
57
|
sysdir = get_windows_sysdir()
|
58
58
|
bin_files = bin_files.map{ |i| '"' + to_native_path(i) + '" "' + sysdir + '"' }
|
59
59
|
return bin_files
|
@@ -110,4 +110,14 @@ EOS
|
|
110
110
|
mkfile.close
|
111
111
|
mkfile_dummy.close
|
112
112
|
end
|
113
|
+
if RUBY_PLATFORM =~ /mingw/
|
114
|
+
begin
|
115
|
+
mkfile = open('nmake.cmd', 'r')
|
116
|
+
mkfile2 = open('make.cmd', 'w')
|
117
|
+
mkfile2.puts mkfile.read
|
118
|
+
ensure
|
119
|
+
mkfile.close
|
120
|
+
mkfile2.close
|
121
|
+
end
|
122
|
+
end
|
113
123
|
end
|
data/index_ja.html
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Redirect to Transactd SDK Document (JA)</title>
|
4
|
+
<meta http-equiv="REFRESH" content="0;url=http://www.bizstation.jp/ja/transactd/client/sdk/doc/index.html">
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
|
8
|
+
<p class="h1">
|
9
|
+
Redirect to Transactd SDK Document ...
|
10
|
+
</p>
|
11
|
+
<p>
|
12
|
+
Redirecting to <a href="http://www.bizstation.jp/ja/transactd/client/sdk/doc/index.html">Transactd SDK Document (JA)</a>
|
13
|
+
</p>
|
14
|
+
</body>
|
15
|
+
</html>
|
@@ -21,8 +21,6 @@
|
|
21
21
|
require 'date'
|
22
22
|
require 'transactd'
|
23
23
|
|
24
|
-
TYPE_SCHEMA_BDF = 0
|
25
|
-
|
26
24
|
USE_NORMAL = 0
|
27
25
|
USE_TRANS = 1
|
28
26
|
USE_BALKINS = 2
|
@@ -203,7 +201,7 @@ def createTestDataBase(db, uri)
|
|
203
201
|
puts("createTestDataBase erorr:No.#{db.stat().to_s} #{uri}")
|
204
202
|
return false
|
205
203
|
end
|
206
|
-
if (db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', ''))
|
204
|
+
if (db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', ''))
|
207
205
|
dbdef = db.dbDef()
|
208
206
|
td = Transactd::Tabledef.new()
|
209
207
|
td.setTableName('user')
|
@@ -286,8 +284,8 @@ def main(argv)
|
|
286
284
|
exeType = Integer(argv[3]) # -1
|
287
285
|
insertBeforeNoDelete = ((argv.length > 4) && (Integer(argv[4]) != 0))
|
288
286
|
|
289
|
-
db = Transactd::Database.
|
290
|
-
if (db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '') == false)
|
287
|
+
db = Transactd::Database.new()
|
288
|
+
if (db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '') == false)
|
291
289
|
if (!createTestDataBase(db, uri))
|
292
290
|
db.close()
|
293
291
|
return
|
@@ -296,7 +294,7 @@ def main(argv)
|
|
296
294
|
end
|
297
295
|
printHeader(uri, count)
|
298
296
|
|
299
|
-
if (!db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', ''))
|
297
|
+
if (!db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', ''))
|
300
298
|
puts("open table erorr No:#{db.stat().to_s}")
|
301
299
|
else
|
302
300
|
tb = openTable(db, 'user', Transactd::TD_OPEN_NORMAL)
|
@@ -23,7 +23,6 @@ require 'transactd'
|
|
23
23
|
FN_ID = 0
|
24
24
|
FN_NAME = 1
|
25
25
|
|
26
|
-
TYPE_SCHEMA_BDF = 0
|
27
26
|
PARALLEL_TRN = 1000
|
28
27
|
LOCK_SINGLE_NOWAIT = 200
|
29
28
|
TRANS_BIAS = PARALLEL_TRN + LOCK_SINGLE_NOWAIT
|
@@ -31,31 +30,35 @@ TRANS_BIAS = PARALLEL_TRN + LOCK_SINGLE_NOWAIT
|
|
31
30
|
def createTable(db)
|
32
31
|
dbdef = db.dbDef()
|
33
32
|
td = Transactd::Tabledef.new()
|
33
|
+
# Set table schema codepage to UTF-8
|
34
|
+
# - codepage for field NAME and tableNAME
|
35
|
+
td.schemaCodePage = Transactd::CP_UTF8
|
34
36
|
td.setTableName('user')
|
35
37
|
td.setFileName('user.dat')
|
38
|
+
# Set table default charaset index
|
39
|
+
# - default charset for field VALUE
|
40
|
+
td.charsetIndex = Transactd::charsetIndex(Transactd::CP_UTF8)
|
36
41
|
td.id = 1
|
37
42
|
td.pageSize = 2048
|
38
43
|
dbdef.insertTable(td)
|
39
|
-
|
40
|
-
|
41
|
-
fd = dbdef.insertField(td.id, 0)
|
44
|
+
# id
|
45
|
+
fd = dbdef.insertField(td.id, FN_ID)
|
42
46
|
fd.setName('id')
|
43
47
|
fd.type = Transactd::Ft_integer
|
44
48
|
fd.len = 4
|
45
49
|
dbdef.updateTableDef(1)
|
46
|
-
|
47
|
-
fd = dbdef.insertField(td.id,
|
50
|
+
# name
|
51
|
+
fd = dbdef.insertField(td.id, FN_NAME)
|
48
52
|
fd.setName('name')
|
49
53
|
fd.type = Transactd::Ft_myvarchar
|
50
54
|
fd.len = 100
|
51
55
|
dbdef.updateTableDef(td.id)
|
52
|
-
|
56
|
+
# key
|
53
57
|
kd = dbdef.insertKey(td.id, 0)
|
54
58
|
kd.segment(0).fieldNum = 0
|
55
59
|
kd.segment(0).flags.bit8 = 1 # extend key type
|
56
60
|
kd.segment(0).flags.bit1 = 1 # changeable
|
57
61
|
kd.segmentCount = 1
|
58
|
-
|
59
62
|
td.primaryKeyNum = 0
|
60
63
|
dbdef.updateTableDef(td.id)
|
61
64
|
end
|
@@ -107,9 +110,9 @@ def main(argv)
|
|
107
110
|
end
|
108
111
|
end
|
109
112
|
|
110
|
-
db = Transactd::Database.
|
113
|
+
db = Transactd::Database.new()
|
111
114
|
|
112
|
-
if !db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '')
|
115
|
+
if !db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '')
|
113
116
|
db.create(uri)
|
114
117
|
if db.stat() != 0
|
115
118
|
puts("create database error No #{db.stat()}")
|
@@ -118,7 +121,7 @@ def main(argv)
|
|
118
121
|
end
|
119
122
|
end
|
120
123
|
|
121
|
-
if !db.open(uri, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '')
|
124
|
+
if !db.open(uri, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL, '', '')
|
122
125
|
puts("open table erorr No #{db.stat().to_s}")
|
123
126
|
db.close()
|
124
127
|
return
|
@@ -158,8 +161,8 @@ def main(argv)
|
|
158
161
|
|
159
162
|
if functionNumber == 2
|
160
163
|
db.beginTrn(TRANS_BIAS)
|
161
|
-
tb.clearBuffer()
|
162
164
|
for i in rangeStart..rangeEnd do
|
165
|
+
tb.clearBuffer()
|
163
166
|
tb.setFV(FN_ID, i)
|
164
167
|
tb.seek()
|
165
168
|
if (tb.stat() == 0)
|
@@ -38,8 +38,6 @@ FDI_USER_ID = 1
|
|
38
38
|
FDI_BODY = 2
|
39
39
|
FDI_IMAGE = 3
|
40
40
|
|
41
|
-
TYPE_SCHEMA_BDF = 0
|
42
|
-
|
43
41
|
def dropDatabase(db)
|
44
42
|
db.open(URL)
|
45
43
|
expect(db.stat()).to eq 0
|
@@ -57,7 +55,7 @@ def createDatabase(db)
|
|
57
55
|
end
|
58
56
|
|
59
57
|
def openDatabase(db)
|
60
|
-
db.open(URL, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
58
|
+
db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
61
59
|
expect(db.stat()).to eq 0
|
62
60
|
end
|
63
61
|
|
@@ -128,26 +126,20 @@ def getTestBinary()
|
|
128
126
|
end
|
129
127
|
|
130
128
|
describe Transactd, 'blob' do
|
131
|
-
before :each do
|
132
|
-
@db = Transactd::Database.createObject()
|
133
|
-
end
|
134
|
-
after :each do
|
135
|
-
@db.close()
|
136
|
-
@db = nil
|
137
|
-
end
|
138
|
-
|
139
129
|
it 'create' do
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
tb
|
130
|
+
db = Transactd::Database.new()
|
131
|
+
createDatabase(db)
|
132
|
+
openDatabase(db)
|
133
|
+
createTable(db)
|
134
|
+
tb = openTable(db)
|
135
|
+
db.close()
|
145
136
|
end
|
146
137
|
|
147
138
|
it 'insert' do
|
139
|
+
db = Transactd::Database.new()
|
148
140
|
image = getTestBinary()
|
149
|
-
openDatabase(
|
150
|
-
tb = openTable(
|
141
|
+
openDatabase(db)
|
142
|
+
tb = openTable(db)
|
151
143
|
expect(tb).not_to be nil
|
152
144
|
# 1
|
153
145
|
tb.clearBuffer()
|
@@ -172,13 +164,14 @@ describe Transactd, 'blob' do
|
|
172
164
|
tb.setFV(FDI_IMAGE, str, str.bytesize)
|
173
165
|
tb.insert()
|
174
166
|
expect(tb.stat()).to eq 0
|
175
|
-
|
167
|
+
db.close()
|
176
168
|
end
|
177
169
|
|
178
170
|
it 'seek' do
|
171
|
+
db = Transactd::Database.new()
|
179
172
|
image = getTestBinary()
|
180
|
-
openDatabase(
|
181
|
-
tb = openTable(
|
173
|
+
openDatabase(db)
|
174
|
+
tb = openTable(db)
|
182
175
|
expect(tb).not_to be nil
|
183
176
|
# 1
|
184
177
|
tb.clearBuffer()
|
@@ -210,13 +203,14 @@ describe Transactd, 'blob' do
|
|
210
203
|
expect(tb.getFVint(FDI_USER_ID)).to eq 1
|
211
204
|
expect(tb.getFVstr(FDI_BODY)).to eq "2\ntest\nテスト\n\nあいうえおあいうえお"
|
212
205
|
expect(tb.getFVbin(FDI_IMAGE).force_encoding('UTF-8')).to eq "2\ntest\nテスト\n\nあいうえおあいうえお"
|
213
|
-
|
206
|
+
db.close()
|
214
207
|
end
|
215
208
|
|
216
209
|
it 'find' do
|
210
|
+
db = Transactd::Database.new()
|
217
211
|
image = getTestBinary()
|
218
|
-
openDatabase(
|
219
|
-
tb = openTable(
|
212
|
+
openDatabase(db)
|
213
|
+
tb = openTable(db)
|
220
214
|
expect(tb).not_to be nil
|
221
215
|
# 1
|
222
216
|
tb.setKeyNum(0)
|
@@ -243,13 +237,14 @@ describe Transactd, 'blob' do
|
|
243
237
|
# 2... but changing seek-direction is not allowed
|
244
238
|
tb.findPrev(true)
|
245
239
|
expect(tb.stat()).to eq Transactd::STATUS_PROGRAM_ERROR
|
246
|
-
|
240
|
+
db.close()
|
247
241
|
end
|
248
242
|
|
249
243
|
it 'update' do
|
244
|
+
db = Transactd::Database.new()
|
250
245
|
image = getTestBinary()
|
251
|
-
openDatabase(
|
252
|
-
tb = openTable(
|
246
|
+
openDatabase(db)
|
247
|
+
tb = openTable(db)
|
253
248
|
expect(tb).not_to be nil
|
254
249
|
# select 1
|
255
250
|
tb.clearBuffer()
|
@@ -289,13 +284,14 @@ describe Transactd, 'blob' do
|
|
289
284
|
expect(tb.getFVint(FDI_USER_ID)).to eq 1
|
290
285
|
expect(tb.getFVstr(FDI_BODY)).to eq "2\nテスト\ntest\n\nABCDEFG"
|
291
286
|
expect(tb.getFVbin(FDI_IMAGE).force_encoding('UTF-8')).to eq "2\ntest\nテスト\n\nあいうえおあいうえお"
|
292
|
-
|
287
|
+
db.close()
|
293
288
|
end
|
294
289
|
|
295
290
|
it 'delete' do
|
291
|
+
db = Transactd::Database.new()
|
296
292
|
image = getTestBinary()
|
297
|
-
openDatabase(
|
298
|
-
tb = openTable(
|
293
|
+
openDatabase(db)
|
294
|
+
tb = openTable(db)
|
299
295
|
expect(tb).not_to be nil
|
300
296
|
# delete 2
|
301
297
|
tb.clearBuffer()
|
@@ -323,10 +319,11 @@ describe Transactd, 'blob' do
|
|
323
319
|
# eof
|
324
320
|
tb.seekNext()
|
325
321
|
expect(tb.stat()).to eq Transactd::STATUS_EOF
|
326
|
-
|
322
|
+
db.close()
|
327
323
|
end
|
328
324
|
|
329
325
|
it 'drop' do
|
330
|
-
|
326
|
+
db = Transactd::Database.new()
|
327
|
+
dropDatabase(db)
|
331
328
|
end
|
332
329
|
end
|
@@ -32,14 +32,11 @@ describe Transactd, 'datetime' do
|
|
32
32
|
nowdate.i = i_nowdate # get today as BtrDate
|
33
33
|
s_nowdate = Transactd::btrdtoa(nowdate)
|
34
34
|
s_nowdate2 = Transactd::btrdtoa(nowdate, true)
|
35
|
-
cs_nowdate = Transactd::c_str(nowdate)
|
36
35
|
#p nowdate
|
37
36
|
#p s_nowdate + ' ' + s_nowdate.encoding.to_s
|
38
37
|
#p s_nowdate2 + ' ' + s_nowdate2.encoding.to_s
|
39
|
-
#p cs_nowdate + ' ' + cs_nowdate.encoding.to_s
|
40
38
|
expect(s_i_nowdate).to eq s_nowdate
|
41
39
|
expect(s_i_nowdate2).to eq s_nowdate2
|
42
|
-
expect(cs_nowdate).to eq s_nowdate
|
43
40
|
end
|
44
41
|
|
45
42
|
it 'get BtrTime' do
|
@@ -53,14 +50,11 @@ describe Transactd, 'datetime' do
|
|
53
50
|
nowtime.i = i_nowtime # get now time as BtrTime
|
54
51
|
s_nowtime = Transactd::btrttoa(nowtime)
|
55
52
|
s_nowtime2 = Transactd::btrttoa(nowtime, true)
|
56
|
-
cs_nowtime = Transactd::c_str(nowtime)
|
57
53
|
#p nowtime
|
58
54
|
#p s_nowtime + ' ' + s_nowtime.encoding.to_s
|
59
55
|
#p s_nowtime2 + ' ' + s_nowtime2.encoding.to_s
|
60
|
-
#p cs_nowtime + ' ' + cs_nowtime.encoding.to_s
|
61
56
|
expect(s_i_nowtime).to eq s_nowtime
|
62
57
|
expect(s_i_nowtime2).to eq s_nowtime2
|
63
|
-
expect(cs_nowtime).to eq s_nowtime
|
64
58
|
end
|
65
59
|
|
66
60
|
it 'get BtrDateTime' do
|
@@ -88,29 +82,6 @@ describe Transactd, 'datetime' do
|
|
88
82
|
#p s_datetime_d + ' ' + s_datetime_t
|
89
83
|
end
|
90
84
|
|
91
|
-
it 'get Bdate' do
|
92
|
-
date = Transactd::atobtrd('2012-08-22')
|
93
|
-
bdate = Transactd::Bdate.new(date.i)
|
94
|
-
bdate2 = Transactd::Bdate.new(Transactd::btrdtoa(date))
|
95
|
-
#p bdate,bdate2
|
96
|
-
btrdate = bdate.btr_date()
|
97
|
-
btrdate2 = bdate2.btr_date()
|
98
|
-
#p btrdate, btrdate2
|
99
|
-
s_bdate = bdate.c_str()
|
100
|
-
s_bdate2 = bdate2.c_str()
|
101
|
-
expect(s_bdate).to eq s_bdate2
|
102
|
-
#p s_bdate + ' ' + s_bdate.encoding.to_s
|
103
|
-
#p s_bdate2 + ' ' + s_bdate2.encoding.to_s
|
104
|
-
expect(bdate.year()).to eq 2012
|
105
|
-
expect(bdate.month()).to eq 8
|
106
|
-
expect(bdate.date()).to eq 22
|
107
|
-
expect(bdate.year_str()).to eq '2012'
|
108
|
-
expect(bdate.month_str()).to eq '8'
|
109
|
-
expect(bdate.date_str()).to eq '22'
|
110
|
-
#p bdate.year(), bdate.month(), bdate.date()
|
111
|
-
#p bdate.year_str(), bdate.month_str(), bdate.date_str()
|
112
|
-
end
|
113
|
-
|
114
85
|
it 'get BtrTimeStamp from string' do
|
115
86
|
date = Transactd::atobtrd('2012-08-22')
|
116
87
|
time = Transactd::atobtrt('15:37:00')
|
@@ -41,8 +41,6 @@ FDI_NAME = 1
|
|
41
41
|
FDN_NAME = '名前'.encode('UTF-8')
|
42
42
|
|
43
43
|
|
44
|
-
TYPE_SCHEMA_BDF = 0
|
45
|
-
|
46
44
|
def testDropDatabase(db, url)
|
47
45
|
db.open(url)
|
48
46
|
expect(db.stat()).to eq 0
|
@@ -50,17 +48,19 @@ def testDropDatabase(db, url)
|
|
50
48
|
expect(db.stat()).to eq 0
|
51
49
|
end
|
52
50
|
|
53
|
-
def testCreateDatabase(
|
51
|
+
def testCreateDatabase(url)
|
52
|
+
db = Transactd::Database.new()
|
54
53
|
db.create(url)
|
55
54
|
if db.stat() == Transactd::STATUS_TABLE_EXISTS_ERROR
|
56
55
|
testDropDatabase(db, url)
|
57
56
|
db.create(url)
|
58
57
|
end
|
59
58
|
expect(db.stat()).to eq 0
|
59
|
+
db.close()
|
60
60
|
end
|
61
61
|
|
62
62
|
def testOpenDatabase(db, url)
|
63
|
-
db.open(url, TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
63
|
+
db.open(url, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
|
64
64
|
expect(db.stat()).to eq 0
|
65
65
|
end
|
66
66
|
|
@@ -162,7 +162,8 @@ def testFind(db, tablename)
|
|
162
162
|
tb.close()
|
163
163
|
end
|
164
164
|
|
165
|
-
def testWhole(
|
165
|
+
def testWhole(tableid, tablename, url)
|
166
|
+
db = Transactd::Database.new()
|
166
167
|
tablename = tablename.encode('UTF-8') # table name must be UTF-8
|
167
168
|
testOpenDatabase(db, url)
|
168
169
|
testCreateTable(db, tableid, tablename)
|
@@ -170,39 +171,37 @@ def testWhole(db, tableid, tablename, url)
|
|
170
171
|
testInsert(db, tablename)
|
171
172
|
testGetEqual(db, tablename)
|
172
173
|
testFind(db, tablename)
|
174
|
+
db.close()
|
173
175
|
end
|
174
176
|
|
175
177
|
|
176
178
|
describe Transactd do
|
177
|
-
before :each do
|
178
|
-
@db = Transactd::Database.createObject()
|
179
|
-
end
|
180
|
-
after :each do
|
181
|
-
@db.close()
|
182
|
-
@db = nil
|
183
|
-
end
|
184
|
-
|
185
179
|
it 'create database' do
|
186
|
-
testCreateDatabase(
|
180
|
+
testCreateDatabase(URL.encode('UTF-8'))
|
187
181
|
end
|
188
182
|
|
189
183
|
it 'table which has kanji-named field' do
|
190
|
-
testWhole(
|
184
|
+
testWhole(1, 'kanji-field', URL.encode('UTF-8'))
|
191
185
|
end
|
192
186
|
|
193
187
|
it 'kanji-named table' do
|
194
|
-
testWhole(
|
188
|
+
testWhole(2, '漢字テーブル', URL)
|
195
189
|
end
|
196
190
|
|
197
191
|
it 'create kanji-named database' do
|
198
|
-
testCreateDatabase(
|
192
|
+
testCreateDatabase(URL_KANJI.encode('UTF-8')) # URL must be UTF-8
|
199
193
|
end
|
200
194
|
|
201
195
|
it 'table which has kanji-named field' do
|
202
|
-
testWhole(
|
196
|
+
testWhole(1, 'kanji-field', URL_KANJI.encode('UTF-8'))
|
203
197
|
end
|
204
198
|
|
205
199
|
it 'kanji-named table' do
|
206
|
-
testWhole(
|
200
|
+
testWhole(2, '漢字テーブル', URL_KANJI.encode('UTF-8'))
|
201
|
+
end
|
202
|
+
|
203
|
+
it 'drop database' do
|
204
|
+
db = Transactd::Database.new()
|
205
|
+
testDropDatabase(db, URL_KANJI.encode('UTF-8'))
|
207
206
|
end
|
208
207
|
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
# coding : utf-8
|
2
|
+
=begin ============================================================
|
3
|
+
Copyright (C) 2014 BizStation Corp All rights reserved.
|
4
|
+
|
5
|
+
This program is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU General Public License
|
7
|
+
as published by the Free Software Foundation; either version 2
|
8
|
+
of the License, or (at your option) any later version.
|
9
|
+
|
10
|
+
This program is distributed in the hope that it will be useful,
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
GNU General Public License for more details.
|
14
|
+
|
15
|
+
You should have received a copy of the GNU General Public License
|
16
|
+
along with this program; if not, write to the Free Software
|
17
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
18
|
+
02111-1307, USA.
|
19
|
+
===================================================================
|
20
|
+
=end
|
21
|
+
require 'transactd'
|
22
|
+
require 'thwait'
|
23
|
+
|
24
|
+
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
|
+
return hostname
|
31
|
+
end
|
32
|
+
|
33
|
+
PROTOCOL = 'tdap'
|
34
|
+
HOSTNAME = getHost().sub(/\/$/, '')
|
35
|
+
DBNAME = 'querytest'
|
36
|
+
SCHEMANAME = 'test'
|
37
|
+
BDFNAME = '?dbfile=' + SCHEMANAME + '.bdf'
|
38
|
+
URL = PROTOCOL + '://' + HOSTNAME + '/' + DBNAME + BDFNAME
|
39
|
+
TABLENAME = 'user'
|
40
|
+
|
41
|
+
describe Transactd, 'pool' do
|
42
|
+
it 'create ConnectParams' do
|
43
|
+
cp = Transactd::ConnectParams.new(URL)
|
44
|
+
expect(cp.uri()).to eq URL
|
45
|
+
cp = Transactd::ConnectParams.new(PROTOCOL, HOSTNAME, DBNAME, SCHEMANAME)
|
46
|
+
expect(cp.uri()).to eq URL
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'use connections' do
|
50
|
+
Transactd::PooledDbManager::setMaxConnections(3)
|
51
|
+
cp = Transactd::ConnectParams.new(URL)
|
52
|
+
expect(cp.uri()).to eq URL
|
53
|
+
dbm1 = Transactd::PooledDbManager.new(cp)
|
54
|
+
dbm2 = Transactd::PooledDbManager.new(cp)
|
55
|
+
dbm3 = Transactd::PooledDbManager.new(cp)
|
56
|
+
dbm1.unUse()
|
57
|
+
dbm4 = Transactd::PooledDbManager.new(cp)
|
58
|
+
dbm3.unUse()
|
59
|
+
dbm5 = Transactd::PooledDbManager.new(cp)
|
60
|
+
Transactd::PooledDbManager::setMaxConnections(5)
|
61
|
+
dbm1 = Transactd::PooledDbManager.new(cp)
|
62
|
+
dbm3 = Transactd::PooledDbManager.new(cp)
|
63
|
+
dbm1.unUse()
|
64
|
+
dbm2.unUse()
|
65
|
+
dbm3.unUse()
|
66
|
+
dbm4.unUse()
|
67
|
+
dbm5.unUse()
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'connect to table' do
|
71
|
+
Transactd::PooledDbManager::setMaxConnections(3)
|
72
|
+
cp = Transactd::ConnectParams.new(URL)
|
73
|
+
expect(cp.uri()).to eq URL
|
74
|
+
dbm = Transactd::PooledDbManager.new(cp)
|
75
|
+
atu = Transactd::ActiveTable.new(dbm, 'user')
|
76
|
+
q = Transactd::Query.new()
|
77
|
+
atu.alias('名前', 'name')
|
78
|
+
q.select('id', 'name', 'group').where('id', '<=', '15000')
|
79
|
+
rs = atu.index(0).keyValue(1).read(q)
|
80
|
+
expect(rs.size()).to eq 15000
|
81
|
+
expect(rs[0]['id']).to eq 1
|
82
|
+
expect(rs[0][0]).to eq 1
|
83
|
+
expect(rs[0]['name']).to eq '1 user'
|
84
|
+
expect(rs[0][1]).to eq '1 user'
|
85
|
+
expect(rs[0][2]).to eq 1
|
86
|
+
atu.release()
|
87
|
+
dbm.unUse()
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'can be used in MultiThreads' do
|
91
|
+
Transactd::PooledDbManager::setMaxConnections(5)
|
92
|
+
threads = [];
|
93
|
+
for i in 1..12 do
|
94
|
+
threads.push(Thread.new(i) { |i|
|
95
|
+
#puts('... waiting to get dbm' + i.to_s + ' ...')
|
96
|
+
Thread.pass
|
97
|
+
dbm = Transactd::PooledDbManager.new(Transactd::ConnectParams.new(URL))
|
98
|
+
#puts('GOT dbm' + i.to_s + ' !')
|
99
|
+
sleep(rand(3) + 1)
|
100
|
+
#puts('end dbm' + i.to_s)
|
101
|
+
dbm.unUse()
|
102
|
+
})
|
103
|
+
end
|
104
|
+
tw = ThreadsWait.new(*threads)
|
105
|
+
tw.all_waits()
|
106
|
+
end
|
107
|
+
end
|