ruby-oci8-master 2.0.7

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.
Files changed (84) hide show
  1. data/ChangeLog +2321 -0
  2. data/Makefile +88 -0
  3. data/NEWS +303 -0
  4. data/README +76 -0
  5. data/VERSION +1 -0
  6. data/dist-files +83 -0
  7. data/doc/api.en.html +527 -0
  8. data/doc/api.en.rd +554 -0
  9. data/doc/api.ja.html +525 -0
  10. data/doc/api.ja.rd +557 -0
  11. data/doc/manual.css +35 -0
  12. data/ext/oci8/.document +18 -0
  13. data/ext/oci8/MANIFEST +18 -0
  14. data/ext/oci8/apiwrap.c.tmpl +182 -0
  15. data/ext/oci8/apiwrap.h.tmpl +61 -0
  16. data/ext/oci8/apiwrap.rb +91 -0
  17. data/ext/oci8/apiwrap.yml +1455 -0
  18. data/ext/oci8/attr.c +105 -0
  19. data/ext/oci8/bind.c +366 -0
  20. data/ext/oci8/connection_pool.c +199 -0
  21. data/ext/oci8/encoding.c +289 -0
  22. data/ext/oci8/env.c +178 -0
  23. data/ext/oci8/error.c +378 -0
  24. data/ext/oci8/extconf.rb +179 -0
  25. data/ext/oci8/lob.c +805 -0
  26. data/ext/oci8/metadata.c +232 -0
  27. data/ext/oci8/object.c +727 -0
  28. data/ext/oci8/oci8.c +1156 -0
  29. data/ext/oci8/oci8.h +574 -0
  30. data/ext/oci8/oci8lib.c +527 -0
  31. data/ext/oci8/ocidatetime.c +484 -0
  32. data/ext/oci8/ocihandle.c +751 -0
  33. data/ext/oci8/ocinumber.c +1612 -0
  34. data/ext/oci8/oraconf.rb +1119 -0
  35. data/ext/oci8/oradate.c +611 -0
  36. data/ext/oci8/oranumber_util.c +352 -0
  37. data/ext/oci8/oranumber_util.h +24 -0
  38. data/ext/oci8/post-config.rb +5 -0
  39. data/ext/oci8/stmt.c +673 -0
  40. data/ext/oci8/thread_util.c +85 -0
  41. data/ext/oci8/thread_util.h +30 -0
  42. data/ext/oci8/win32.c +137 -0
  43. data/lib/.document +1 -0
  44. data/lib/dbd/OCI8.rb +591 -0
  45. data/lib/oci8.rb.in +94 -0
  46. data/lib/oci8/.document +8 -0
  47. data/lib/oci8/bindtype.rb +349 -0
  48. data/lib/oci8/compat.rb +113 -0
  49. data/lib/oci8/connection_pool.rb +99 -0
  50. data/lib/oci8/datetime.rb +611 -0
  51. data/lib/oci8/encoding-init.rb +74 -0
  52. data/lib/oci8/encoding.yml +537 -0
  53. data/lib/oci8/metadata.rb +2132 -0
  54. data/lib/oci8/object.rb +581 -0
  55. data/lib/oci8/oci8.rb +721 -0
  56. data/lib/oci8/ocihandle.rb +425 -0
  57. data/lib/oci8/oracle_version.rb +144 -0
  58. data/lib/oci8/properties.rb +73 -0
  59. data/metaconfig +142 -0
  60. data/pre-distclean.rb +7 -0
  61. data/ruby-oci8.gemspec +63 -0
  62. data/setup.rb +1331 -0
  63. data/test/README +4 -0
  64. data/test/config.rb +122 -0
  65. data/test/test_all.rb +51 -0
  66. data/test/test_appinfo.rb +63 -0
  67. data/test/test_array_dml.rb +333 -0
  68. data/test/test_bind_raw.rb +46 -0
  69. data/test/test_bind_time.rb +178 -0
  70. data/test/test_break.rb +96 -0
  71. data/test/test_clob.rb +82 -0
  72. data/test/test_connstr.rb +81 -0
  73. data/test/test_datetime.rb +582 -0
  74. data/test/test_dbi.rb +366 -0
  75. data/test/test_dbi_clob.rb +53 -0
  76. data/test/test_encoding.rb +100 -0
  77. data/test/test_error.rb +88 -0
  78. data/test/test_metadata.rb +1399 -0
  79. data/test/test_oci8.rb +434 -0
  80. data/test/test_oracle_version.rb +70 -0
  81. data/test/test_oradate.rb +256 -0
  82. data/test/test_oranumber.rb +746 -0
  83. data/test/test_rowid.rb +33 -0
  84. metadata +137 -0
@@ -0,0 +1,88 @@
1
+ VERSION = `cat VERSION`
2
+ RUBY = ruby -w
3
+ RDOC = rdoc
4
+
5
+ all: build
6
+
7
+ config.save: lib/oci8.rb.in
8
+ $(RUBY) setup.rb config
9
+
10
+ build: config.save
11
+ $(RUBY) setup.rb setup
12
+
13
+ check: build
14
+ $(RUBY) setup.rb test
15
+
16
+ clean:
17
+ $(RUBY) setup.rb clean
18
+
19
+ distclean:
20
+ $(RUBY) setup.rb distclean
21
+
22
+ install:
23
+ $(RUBY) setup.rb install
24
+
25
+ site-install:
26
+ $(RUBY) setup.rb install
27
+
28
+ format_c_source:
29
+ astyle --options=none --style=linux --indent=spaces=4 --brackets=linux --suffix=none ext/oci8/*.[ch]
30
+
31
+ # internal use only
32
+ .PHONY: rdoc run-rdoc
33
+
34
+ rdoc:
35
+ TZ= $(RDOC) -o rdoc -c us-ascii --threads=1 -W http://ruby-oci8.rubyforge.org/svn/trunk/ruby-oci8/ ext/oci8 lib
36
+
37
+ dist:
38
+ -rm -rf ruby-oci8-$(VERSION)
39
+ mkdir ruby-oci8-$(VERSION)
40
+ tar cf - `cat dist-files` | (cd ruby-oci8-$(VERSION); tar xf - )
41
+ tar cfz ruby-oci8-$(VERSION).tar.gz ruby-oci8-$(VERSION)
42
+
43
+ dist-check: dist
44
+ cd ruby-oci8-$(VERSION) && $(MAKE) RUBY="$(RUBY)"
45
+ cd ruby-oci8-$(VERSION) && $(MAKE) RUBY="$(RUBY)" check
46
+ cd ruby-oci8-$(VERSION)/src && $(MAKE) RUBY="$(RUBY)" sitearchdir=../work sitelibdir=../work site-install
47
+ cd ruby-oci8-$(VERSION)/test && $(RUBY) -I../work -I../support test_all.rb
48
+
49
+ #
50
+ # for Windows
51
+ #
52
+ RUBY_18 = c:\ruby
53
+ RUBY_191 = c:\ruby-1.9.1
54
+ GEMPKG = ruby-oci8-2.0.3-x86-mswin32-60.gem
55
+
56
+ ext\oci8\oci8lib_18.so:
57
+ $(RUBY_18)\bin\ruby -r fileutils -e "FileUtils.rm_rf('ruby18')"
58
+ md ruby18
59
+ cd ruby18
60
+ $(RUBY_18)\bin\ruby ..\setup.rb config -- --with-runtime-check
61
+ $(RUBY_18)\bin\ruby ..\setup.rb setup
62
+ rem $(RUBY_18)\bin\ruby ..\setup.rb test
63
+ cd ..
64
+ copy ruby18\ext\oci8\oci8lib_18.so ext\oci8\oci8lib_18.so
65
+
66
+ ext\oci8\oci8lib_191.so:
67
+ $(RUBY_191)\bin\ruby -r fileutils -e "FileUtils.rm_rf('ruby191')"
68
+ md ruby191
69
+ cd ruby191
70
+ $(RUBY_191)\bin\ruby ..\setup.rb config -- --with-runtime-check
71
+ $(RUBY_191)\bin\ruby ..\setup.rb setup
72
+ rem $(RUBY_191)\bin\ruby ..\setup.rb test
73
+ cd ..
74
+ copy ruby191\ext\oci8\oci8lib_191.so ext\oci8\oci8lib_191.so
75
+ copy ruby191\lib\oci8.rb lib\oci8.rb
76
+
77
+ $(GEMPKG): ext\oci8\oci8lib_18.so ext\oci8\oci8lib_191.so ruby-oci8.gemspec
78
+ $(RUBY_191)\bin\gem build ruby-oci8.gemspec -- current
79
+
80
+ test-win32-ruby18: $(GEMPKG)
81
+ $(RUBY_18)\bin\gem install $(GEMPKG) --no-rdoc --no-ri --local
82
+ $(RUBY_18)\bin\ruby -rubygems test\test_all.rb
83
+
84
+ test-win32-ruby191: $(GEMPKG)
85
+ $(RUBY_191)\bin\gem install $(GEMPKG) --no-rdoc --no-ri --local
86
+ $(RUBY_191)\bin\ruby test\test_all.rb
87
+
88
+ test-win32: test-win32-ruby18 test-win32-ruby191
data/NEWS ADDED
@@ -0,0 +1,303 @@
1
+ 2.0.6:
2
+
3
+ * Fixed issues
4
+
5
+ - fix SEGV when freeing a temporary LOB during GC on rubinius 1.2.3.
6
+
7
+ - revert the exception type from RuntimeError to OCIException when
8
+ a closed OCI handle's method is called. It was chaned in 2.0.5
9
+ by mistake.
10
+
11
+ 2.0.5:
12
+
13
+ * New Features
14
+
15
+ - Support Rubinius.
16
+
17
+ - OraNumber#has_decimal_part? -> boolean
18
+
19
+ OraNumber(10).has_decimal_part? # => false
20
+ OraNumber(10.1).has_decimal_part? # => true
21
+
22
+ - Limitted support for OraNumber's positive and negative infinity.
23
+
24
+ They are converted to '~' and '-~' respectively as described in
25
+ <URL:http://www.ixora.com.au/notes/infinity.htm>.
26
+
27
+ - OCI8.properties is added to control ruby-oci8 behaviour.
28
+ It supports :bind_string_as_nchar only for now.
29
+
30
+ - OCI8.properties[:bind_string_as_nchar] is added.
31
+
32
+ You need to set "OCI8.properties[:bind_string_as_nchar] = true"
33
+ if the database character set is not UTF-8 and NCHAR/NVARCHAR2 columns
34
+ contain characters which cannot be converted to the database character set.
35
+ See: http://rubyforge.org/forum/forum.php?thread_id=48838&forum_id=1078
36
+
37
+ * Fixed issues
38
+
39
+ - Fix InvalidHandle errors on Rails.
40
+ (reported by Jordan Curzon and Aaron Qian)
41
+ See: http://rubyforge.org/forum/forum.php?thread_id=49751&forum_id=1078
42
+
43
+ - Raise "OCIError: ORA-01805: possible error in date/time operation"
44
+ when Oracle 11gR2's client and server timezone versions are not same
45
+ instead of raising a exception "undefined method `*' for nil:NilClass."
46
+ See: http://rubyforge.org/forum/forum.php?thread_id=49102&forum_id=1078
47
+
48
+ - Fix unexpectedly disconnect when failed-logon connections is GC'ed
49
+ and the connection object's address is accidentally same with
50
+ an alive connection.
51
+
52
+ - Fix segmentation fault when calling OCI8::Cursor#[] for
53
+ closed statement object's (reported by Hugo L. Borges)
54
+
55
+ - Fix a bug that a string is bound to RAW.
56
+ Its encoding had been convertd to OCI.encoding incorrectly.
57
+
58
+ - Fix memory leaks when temporary lobs are used.
59
+
60
+ - Fix a problem to assign NULL bind value to object type bind variables.
61
+ (reported by Raimonds Simanovskis)
62
+
63
+ - Support LOB datatypes in object type.
64
+ (reported by Michael Sexton)
65
+
66
+ - Fix to compile on cygwin. The declaration of 'boolean' in Oracle
67
+ conflicts with that of latest cygwin.
68
+ (reported by Don Hill).
69
+
70
+ - Fix to complie for the 32-bit ruby which was compiled on x86_64 linux
71
+ and configured without '--build', '--host' nor '--target'.
72
+ The RUBY_PLATFORM is 'x86_64-linux' even though the ruby is 32-bit.
73
+ (reported by Jason Renschler)
74
+
75
+ - Fix wrong dependencies in Makefile when running 'make -jNNN (where NNN >= 2)'
76
+ (contributed by Alyano Alyanos. See bug #28129 on rubyforge.)
77
+
78
+ - Fix to compile on HP-UX. Duplicated const qualifiers prevented HP-UX cc
79
+ from compiling. (reported by Sebastian YEPES)
80
+
81
+ 2.0.4:
82
+
83
+ * New Features
84
+
85
+ - OCI8.error_message(message_no) -> string
86
+
87
+ Gets the Oracle error message specified by message id.
88
+ Its language depends on NLS_LANGUAGE.
89
+
90
+ Note: This method is unavailable if the Oracle client
91
+ version is 8.0.
92
+
93
+ # When NLS_LANG is AMERICAN_AMERICA.AL32UTF8
94
+ OCI8.error_message(1)
95
+ # => "ORA-00001: unique constraint (%s.%s) violated"
96
+
97
+ # When NLS_LANG is FRENCH_FRANCE.AL32UTF8
98
+ OCI8.error_message(1)
99
+ # => "ORA-00001: violation de contrainte unique (%s.%s)"
100
+
101
+ - OraNumber#dump -> string
102
+
103
+ Returns OraNumber's internal representation whose format
104
+ is same with the return value of Oracle SQL function DUMP().
105
+
106
+ OraNumber.new(100).dump #=> "Typ=2 Len=2: 194,2"
107
+ OraNumber.new(123).dump #=> "Typ=2 Len=3: 194,2,24"
108
+ OraNumber.new(0.1).dump #=> "Typ=2 Len=2: 192,11"
109
+
110
+ * Fixed issues
111
+
112
+ - Fractional second part is lost when ruby's Time instance is bound
113
+ to Oracle datatype TIMESTAMP.
114
+ (reported by Raimonds Simanovskis)
115
+
116
+ - OraNumber#to_i and OraNumber#to_s fail when its scale is larger
117
+ than 38.
118
+ (reported by Raimonds Simanovskis)
119
+
120
+ - Memory leak about 30 bytes per one place holder for object type.
121
+
122
+ - Segmentation fault when a collection of string is bound.
123
+ (reported by Raimonds Simanovskis)
124
+
125
+ - Segmentation fault when GC starts while initializing a bind
126
+ object for object type.
127
+ (reported by Remi Gagnon)
128
+
129
+ - Segmentation fault when OCI8::Cursor#fetch is called prior to
130
+ OCI8::Cursor#exec.
131
+
132
+ - Detailed error message is not reported when PL/SQL NO_DATA_FOUND
133
+ exception is raised.
134
+ (reported by Raimonds Simanovskis)
135
+
136
+ 2.0.3:
137
+
138
+ * Incompatible Changes
139
+
140
+ - Number column in a SQL statement
141
+
142
+ Changes the default data type for number column which fit neither
143
+ Integer nor Float from OraNumber to BigDecimal.
144
+
145
+ conn.exec("select 1.0 from dual") do |row|
146
+ p row[0] # => BigDecimal("1") if the ruby-oci8 version is 2.0.3.
147
+ # => OraNumber(1) if the version is 2.0.2.
148
+ end
149
+
150
+ - Priority of OraNumber within numerical types
151
+
152
+ The return types of basic arithmetic operations with other numerical
153
+ types are changed.
154
+
155
+ 2.0.3:
156
+ OraNumber + Integer => OraNumber (OraNumber wins.)
157
+ OraNumber + Float => Float (OraNumber loses.)
158
+ OraNumber + Rational => Rational (OraNumber loses.)
159
+ OraNumber + BigDecimal => BigDecimal (OraNumber loses.)
160
+
161
+ 2.0.2:
162
+ OraNumber + Integer => OraNumber (OraNumber wins always.)
163
+ OraNumber + Float => OraNumber
164
+ OraNumber + Rational => OraNumber
165
+ OraNumber + BigDecimal => OraNumber
166
+
167
+ - Interval day to second
168
+
169
+ The retrived value of Oracle data type "interval day to second"
170
+ was changed from the number of days as a Rational to the number
171
+ of seconds as a Float by default.
172
+ Use OCI8::BindType::IntervalDS.unit = :day to make it compatible
173
+ with the previous versions.
174
+
175
+ conn.exec("select to_dsinterval('0 00:00:01') from dual") do |row|
176
+ p row[0] # => 1.0 if the version is 2.0.3 and
177
+ # OCI8::BindType::IntervalDS.unit is :second.
178
+ # => (1/86400) if the version is 2.0.3 and
179
+ # OCI8::BindType::IntervalDS.unit is :day or
180
+ # the version is 2.0.2.
181
+ end
182
+
183
+ - Date, timestamp, timestamp with time zone data types and ruby 1.9.2
184
+
185
+ These data types are retrived always as Time values when the
186
+ ruby version is 1.9.2 because the Time class is enhanced to
187
+ represent any time zone and is free from year 2038 problem.
188
+
189
+ Prior to ruby 1.9.2, if the time cannot be represented by
190
+ Unix time or the time zone is neither utc nor local, they are
191
+ retrived as DateTime values.
192
+
193
+ - Non-blocking mode and ruby 1.9
194
+
195
+ non-blocking mode is enabled by default when the ruby is 1.9.
196
+
197
+ * New Features
198
+
199
+ - BigDecimal and Rational are availabe as bind values.
200
+
201
+ - New methods OCI8#module=, OCI8#action= and OCI8#client_info= are added.
202
+
203
+ These methods change the module name, the action name and the client_info
204
+ in the current session respectively.
205
+
206
+ After Oracle 10g client, these don't perform network round trips.
207
+ The change is reflected to the server by the next round trip such as
208
+ OCI8#exec, OCI8#ping, etc.
209
+
210
+ Prior to Oracle 10g client, these call PL/SQL functions such as
211
+ DBMS_APPLICATION_INFO.SET_MODULE, DBMS_APPLICATION_INFO.SET_ACTION,
212
+ and DBMS_APPLICATION_INFO.SET_CLIENT_INFO internally.
213
+ The change is reflected immediately by a network round trip.
214
+
215
+ - OCI8::BindType.default_timezone
216
+
217
+ The default time zone of Time or DateTime values.
218
+ This parameter is used only when
219
+ (1) date values are fetched and the Oracle client version is 8.x
220
+ or
221
+ (2) object types have date data type attributes.
222
+
223
+ Note that if the Oracle client version is 9i or upper, the time
224
+ zone is determined by the session time zone. The default value
225
+ is local time zone. You can change it to GMT by executing the
226
+ following SQL statement for each connection.
227
+
228
+ alter session set time_zone = '00:00'
229
+
230
+ * Other specification changes
231
+
232
+ - Add a global function OraNumber(obj) as a shortcut of OraNumber.new(obj)
233
+ as Rational and BigDecimal do.
234
+
235
+ - Fix to accept nil attribute in object type's
236
+ constructors. This works only for simple data types such as number,
237
+ string. But it doesn't for complex types such as object types.
238
+ (requested by Remi Gagnon)
239
+
240
+ - add DATE datatype support in object types.
241
+
242
+ - Change OCI8::LOB#write to accept an object which is not a String and
243
+ doesn't respond to 'to_str' as IO#write does.
244
+ (requested by Christopher Jones)
245
+
246
+ - Change the initial polling interval of
247
+ non-blocking mode for ruby 1.8 from 100 msec to 10 msec, which
248
+ is same with ruby-oci8 1.0.
249
+
250
+ * Fixed installation issues.
251
+
252
+ - Fix oraconf.rb for ruby 1.8.5 with Oracle 8.x which needs some object
253
+ files to link with.
254
+ (reported by Jayson Cena)
255
+
256
+ - Fix oraconf.rb for ruby 1.9.2 preview1.
257
+ (pointed by Raimonds Simanovskis)
258
+
259
+ - Fix oraconf.rb to compile for AIX instant clients.
260
+ (reported by Kazuya Teramoto)
261
+
262
+ 2.0.2:
263
+
264
+ * add new methods
265
+ - OCI8#select_one(sql, *bindvars) -> first_row
266
+
267
+ - OCI8#ping -> true or false
268
+
269
+ Verifies that the Oracle connection is alive.
270
+ OCI8#ping also can be used to flush all the pending OCI
271
+ client-side calls to the server if any exist.
272
+
273
+ - OCI8#client_identifier = client_id
274
+
275
+ Look at the following link to know what is the client identifier.
276
+ http://it.toolbox.com/blogs/database-solutions/oracle-session-tracing-part-i-16356
277
+
278
+ Note that the specified identifier doesn't change the v$session
279
+ immediately. It is done by the next network round trip
280
+ such as OCI8#exec or OCI8#ping.
281
+
282
+ * fix problems when compiling with Oracle 9.2 and 8.0.
283
+ (reported by Axel Reinhold)
284
+
285
+ * [dbi] fix to pass a newly added sanity check in dbi 0.4.1.
286
+ (reported by Dirk Herzhauser)
287
+
288
+ * fix an error when executing "select NULL from dual".
289
+ http://rubyforge.org/forum/forum.php?thread_id=32468&forum_id=1078
290
+ (contributed by Raimonds Simanovskis)
291
+
292
+ * [ruby 1.9] fix OCI8::BLOB to read/write binary. Prior to 2.0.1,
293
+ it was treated as text tagged with NLS_LANG encoding.
294
+
295
+ * [ruby 1.9] fix to bind string data by the length got from String#bytesize
296
+ converted to OCI8.encoding, not by String#size.
297
+
298
+ 2.0.1:
299
+
300
+ * release a binary gem for Windows, which contains libraries for both
301
+ ruby 1.8 and ruby 1.9.1.
302
+ * add OCI8#oracle_server_version.
303
+ * fix bugs when fetching and binding time objects.
data/README ADDED
@@ -0,0 +1,76 @@
1
+ = How to make
2
+
3
+ * <tt>ruby</tt> and <tt>make</tt> (or nmake on MSVC) commands in the environment variable <tt>PATH</tt>?
4
+ * <tt>ruby</tt> is 1.8.0 or later? (Use ruby-oci8 0.1.x for ruby 1.6.x.)
5
+
6
+ == For OCI installed by Oracle Universal Installer
7
+ make sure the environment variable ORACLE_HOME (or registry on Windows)
8
+ is set correctly. run the the following commands.
9
+
10
+ make (or nmake on MSVC)
11
+
12
+ == For OCI installed by Oracle Instant Installer
13
+
14
+ linux:
15
+ ruby setup.rb config -- --with-instant-client
16
+ make
17
+
18
+ others:
19
+ ruby setup.rb config -- --with-instant-client=/path/to/instantclient10_1
20
+ make (or nmake on MSVC)
21
+
22
+ = On compilation failure
23
+
24
+ Please report the following information to kubo@jiubao.org.
25
+
26
+ * last 100 lines of 'ext/oci8/mkmf.log'.
27
+ * the results of the following commands:
28
+ ruby -r rbconfig -e "p Config::CONFIG['host']"
29
+ ruby -r rbconfig -e "p Config::CONFIG['CC']"
30
+ ruby -r rbconfig -e "p Config::CONFIG['CFLAGS']"
31
+ ruby -r rbconfig -e "p Config::CONFIG['LDSHARED']"
32
+ ruby -r rbconfig -e "p Config::CONFIG['LDFLAGS']"
33
+ ruby -r rbconfig -e "p Config::CONFIG['LIBS']"
34
+ ruby -r rbconfig -e "p Config::CONFIG['GNU_LD']"
35
+ * if you use gcc:
36
+ gcc --print-prog-name=ld
37
+ gcc --print-prog-name=as
38
+ * on platforms which can use both 32bit/64bit binaries:
39
+ file $ORACLE_HOME/bin/oracle
40
+ file `which ruby`
41
+ echo $LD_LIBRARY_PATH
42
+
43
+ = How to run unit test
44
+
45
+ before runing unit test,
46
+ 1. connect to Oracle as system:
47
+
48
+ $ sqlplus system/<password_of_system>
49
+
50
+ 2. create user ruby:
51
+
52
+ SQL> CREATE USER ruby IDENTIFIED BY oci8;
53
+
54
+ or
55
+
56
+ SQL> CREATE USER ruby IDENTIFIED BY oci8
57
+ 2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
58
+
59
+ 3. grant the privilege to connect and execute.
60
+
61
+ SQL> GRANT connect, resource, create view TO ruby;
62
+
63
+ 4. connect to Oracle as sys
64
+
65
+ $ sqlplus 'sys/<password_of_sys> as sysdba'
66
+
67
+ 5. grant the privilege for the unittest of blocking-mode.
68
+
69
+ SQL> GRANT EXECUTE ON dbms_lock TO ruby;
70
+
71
+ 6. change test/config.rb as you like
72
+
73
+ Then you can run:
74
+ $ make check
75
+ or
76
+ $ nmake check (If your compiler is MS Visual C++.)