ruby-oci8 2.2.7 → 2.2.8
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +90 -0
- data/NEWS +25 -0
- data/docs/install-instant-client.md +1 -1
- data/ext/oci8/attr.c +4 -2
- data/ext/oci8/bind.c +3 -3
- data/ext/oci8/oci8.h +1 -0
- data/ext/oci8/oci8lib.c +6 -4
- data/ext/oci8/oraconf.rb +55 -44
- data/ext/oci8/oradate.c +1 -1
- data/ext/oci8/win32.c +4 -2
- data/lib/oci8.rb +5 -2
- data/lib/oci8/version.rb +1 -1
- data/setup.rb +11 -2
- data/test/README.md +3 -6
- data/test/test_break.rb +2 -3
- data/test/test_datetime.rb +8 -3
- metadata +26 -41
data/ChangeLog
CHANGED
@@ -1,3 +1,93 @@
|
|
1
|
+
2020-01-11 Kubo Takehiro <kubo@jiubao.org>
|
2
|
+
* NEWS: Add changes between 2.2.7 and 2.2.8.
|
3
|
+
* lib/oci8/version.rb: Update to 2.2.8.
|
4
|
+
|
5
|
+
2020-01-11 Kubo Takehiro <kubo@jiubao.org>
|
6
|
+
* ext/oci8/bind.c: Fix warning: comparison between signed and
|
7
|
+
unsigned integer expressions
|
8
|
+
|
9
|
+
2020-01-11 Kubo Takehiro <kubo@jiubao.org>
|
10
|
+
* test/README.md: Update preparation SQL statements for running tests.
|
11
|
+
|
12
|
+
2020-01-11 Kubo Takehiro <kubo@jiubao.org>
|
13
|
+
* test/test_break.rb: Check Oracle server OS where tests run
|
14
|
+
using dbms_utility.port_string. Tests in test_break.rb
|
15
|
+
failed on Windows.
|
16
|
+
|
17
|
+
2020-01-07 Kubo Takehiro <kubo@jiubao.org>
|
18
|
+
* mkpkg-win32.rb: Workarounds for compilation using ruby 2.4 and 2.6 with
|
19
|
+
latest msys2 to avoid 'undefined reference to __chk_fail'
|
20
|
+
|
21
|
+
2020-01-06 Kubo Takehiro <kubo@jiubao.org>
|
22
|
+
* ext/oci8/win32.c: Fix warnings caused by the change of rb_ensure()'s
|
23
|
+
arguments in ruby 2.7.
|
24
|
+
|
25
|
+
2019-12-16 Kubo Takehiro <kubo@jiubao.org>
|
26
|
+
* test/test_datetime.rb: Remove "require 'scanf'" to run tests with Ruby 2.7.
|
27
|
+
The 'scanf' library was removed. https://bugs.ruby-lang.org/issues/16170
|
28
|
+
|
29
|
+
2019-12-15 Kubo Takehiro <kubo@jiubao.org>
|
30
|
+
* ext/oci8/oradate.c: Fix bug of OraDate.now introduced 15 years ago.
|
31
|
+
|
32
|
+
2019-12-15 Kubo Takehiro <kubo@jiubao.org>
|
33
|
+
* ext/oci8/attr.c, ext/oci8/oci8lib.c: Fix warnings caused by the
|
34
|
+
change of rb_ensure()'s arguments in ruby 2.7.
|
35
|
+
|
36
|
+
2019-06-19 Kubo Takehiro <kubo@jiubao.org>
|
37
|
+
* Merge pull request #217 from nathanbwright/patch-1
|
38
|
+
Fix spelling in install-instant-client.md
|
39
|
+
(GH-217)
|
40
|
+
|
41
|
+
2019-06-18 Nathan Wright <nathanbwright@users.noreply.github.com>
|
42
|
+
* docs/install-instant-client.md: Fix spelling in install-instant-client.md
|
43
|
+
(GH-217)
|
44
|
+
|
45
|
+
2019-04-24 Kubo Takehiro <kubo@jiubao.org>
|
46
|
+
* Merge pull request #212 from tomasjura/master
|
47
|
+
Compilation fix for Windows ( and some small cleanups )
|
48
|
+
(GH-212)
|
49
|
+
|
50
|
+
2019-04-23 Tomas Jura <tomas.jura1@gmail.com>
|
51
|
+
* ext/oci8/oci8.h: eliminate compiler warning
|
52
|
+
(GH-212)
|
53
|
+
|
54
|
+
2019-04-20 Tomas Jura <tomas.jura1@gmail.com>
|
55
|
+
* ext/oci8/bind.c: compiler warning eliminated
|
56
|
+
(GH-212)
|
57
|
+
|
58
|
+
2019-04-20 Tomas Jura <tomas.jura1@gmail.com>
|
59
|
+
* setup.rb: use splat operator instead dummy variables
|
60
|
+
(GH-212)
|
61
|
+
|
62
|
+
2019-04-20 Tomas Jura <tomas.jura1@gmail.com>
|
63
|
+
* lib/oci8.rb: use fiddler instead obsolete Win32API
|
64
|
+
(GH-212)
|
65
|
+
|
66
|
+
2019-04-20 Tomas Jura <tomas.jura1@gmail.com>
|
67
|
+
* ext/oci8/oraconf.rb: fix typo in windows compilation
|
68
|
+
(GH-212)
|
69
|
+
|
70
|
+
2019-03-23 Kubo Takehiro <kubo@jiubao.org>
|
71
|
+
* Merge pull request #210 from dminuoso/allow-custom
|
72
|
+
(Nix) Allow for specifying include/library paths
|
73
|
+
(GH-210)
|
74
|
+
|
75
|
+
2019-03-23 Victor Nawothnig <Victor.Nawothnig@gmail.com>
|
76
|
+
* ext/oci8/oraconf.rb: Fix missing support for full client
|
77
|
+
(GH-210)
|
78
|
+
|
79
|
+
2019-03-22 Victor Nawothnig <Victor.Nawothnig@gmail.com>
|
80
|
+
* ext/oci8/oraconf.rb: fixup! Allow overriding library/include paths
|
81
|
+
(GH-210)
|
82
|
+
|
83
|
+
2019-03-21 Victor Nawothnig <Victor.Nawothnig@gmail.com>
|
84
|
+
* setup.rb: Add documentation for new flags
|
85
|
+
(GH-210)
|
86
|
+
|
87
|
+
2019-03-21 Victor Nawothnig <Victor.Nawothnig@gmail.com>
|
88
|
+
* ext/oci8/oraconf.rb: Allow overriding library/include paths
|
89
|
+
(GH-210)
|
90
|
+
|
1
91
|
2019-01-06 Kubo Takehiro <kubo@jiubao.org>
|
2
92
|
* NEWS: Add changes between 2.2.6.1 and 2.2.7.
|
3
93
|
* lib/oci8/version.rb: Update to 2.2.7
|
data/NEWS
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
# @markup markdown
|
2
2
|
|
3
|
+
2.2.8 (2020-01-11)
|
4
|
+
==================
|
5
|
+
|
6
|
+
New features
|
7
|
+
------------
|
8
|
+
|
9
|
+
* Add support to specify include and lib directories of Oracle library on installation. (GH-210)
|
10
|
+
|
11
|
+
The following three flags are added.
|
12
|
+
|
13
|
+
* --with-instant-client-dir
|
14
|
+
* --with-instant-client-include
|
15
|
+
* --with-instant-client-lib
|
16
|
+
|
17
|
+
Fixed issue
|
18
|
+
-----------
|
19
|
+
|
20
|
+
- Suppress warnings compiling oci8lib.so (GH-212 and others)
|
21
|
+
|
22
|
+
- Fix compilation and tests on Windows.
|
23
|
+
|
24
|
+
- Fix spelling in install-instant-client.md (GH-217)
|
25
|
+
|
26
|
+
- Use fiddler instead obsolete Win32API on Windows (GH-212)
|
27
|
+
|
3
28
|
2.2.7 (2019-01-06)
|
4
29
|
==================
|
5
30
|
|
@@ -18,7 +18,7 @@ Look at {file:docs/install-on-osx.md} for OS X.
|
|
18
18
|
Install Oracle Instant Client Packages
|
19
19
|
--------------------------------------
|
20
20
|
|
21
|
-
###
|
21
|
+
### Download Instant Client Packages
|
22
22
|
|
23
23
|
Download the following packages from [Oracle Technology Network](http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html).
|
24
24
|
|
data/ext/oci8/attr.c
CHANGED
@@ -15,8 +15,9 @@ typedef struct {
|
|
15
15
|
OCIRowid *ridp;
|
16
16
|
} rowid_arg_t;
|
17
17
|
|
18
|
-
static VALUE get_rowid_attr(
|
18
|
+
static VALUE get_rowid_attr(VALUE varg)
|
19
19
|
{
|
20
|
+
rowid_arg_t *arg = (rowid_arg_t *)varg;
|
20
21
|
oci8_base_t *base = arg->base;
|
21
22
|
ub4 attrtype = arg->attrtype;
|
22
23
|
char buf[MAX_ROWID_LEN];
|
@@ -36,8 +37,9 @@ static VALUE get_rowid_attr(rowid_arg_t *arg)
|
|
36
37
|
return rb_external_str_new_with_enc(buf, buflen, rb_usascii_encoding());
|
37
38
|
}
|
38
39
|
|
39
|
-
static VALUE rowid_ensure(
|
40
|
+
static VALUE rowid_ensure(VALUE varg)
|
40
41
|
{
|
42
|
+
rowid_arg_t *arg = (rowid_arg_t *)varg;
|
41
43
|
if (arg->ridp != NULL) {
|
42
44
|
OCIDescriptorFree(arg->ridp, OCI_DTYPE_ROWID);
|
43
45
|
}
|
data/ext/oci8/bind.c
CHANGED
@@ -383,7 +383,7 @@ static sb4 in_bind_callback(void *ictxp, OCIBind *bindp, ub4 iter, ub4 index, vo
|
|
383
383
|
|
384
384
|
if (cb->tail == &cb->head) {
|
385
385
|
/* empty string */
|
386
|
-
*bufpp = "";
|
386
|
+
*bufpp = (void *)"";
|
387
387
|
*alenp = 0;
|
388
388
|
*piecep = OCI_ONE_PIECE;
|
389
389
|
} else {
|
@@ -477,7 +477,7 @@ static VALUE bind_long_get(oci8_bind_t *obind, void *data, void *null_struct)
|
|
477
477
|
static void bind_long_set(oci8_bind_t *obind, void *data, void **null_structp, VALUE val)
|
478
478
|
{
|
479
479
|
chunk_buf_t *cb = (chunk_buf_t *)data;
|
480
|
-
|
480
|
+
ub4 len;
|
481
481
|
const char *buf;
|
482
482
|
|
483
483
|
if (IS_BIND_LONG(obind)) {
|
@@ -485,7 +485,7 @@ static void bind_long_set(oci8_bind_t *obind, void *data, void **null_structp, V
|
|
485
485
|
} else {
|
486
486
|
StringValue(val);
|
487
487
|
}
|
488
|
-
len = RSTRING_LEN(val);
|
488
|
+
len = (ub4)RSTRING_LEN(val);
|
489
489
|
buf = RSTRING_PTR(val);
|
490
490
|
cb->tail = &cb->head;
|
491
491
|
while (1) {
|
data/ext/oci8/oci8.h
CHANGED
@@ -424,6 +424,7 @@ void *oci8_check_typeddata(VALUE obj, const oci8_handle_data_type_t *data_type,
|
|
424
424
|
extern VALUE eOCIException;
|
425
425
|
extern VALUE eOCIBreak;
|
426
426
|
void Init_oci8_error(void);
|
427
|
+
NORETURN(void oci8_do_raise(OCIError *errhp, sword status, OCIStmt *stmthp, const char *file, int line));
|
427
428
|
NORETURN(void oci8_do_env_raise(OCIEnv *envhp, sword status, int free_envhp, const char *file, int line));
|
428
429
|
NORETURN(void oci8_do_raise_init_error(const char *file, int line));
|
429
430
|
sb4 oci8_get_error_code(OCIError *errhp);
|
data/ext/oci8/oci8lib.c
CHANGED
@@ -481,8 +481,8 @@ typedef struct {
|
|
481
481
|
OCIStmt *stmtp;
|
482
482
|
} cb_arg_t;
|
483
483
|
|
484
|
-
static VALUE exec_sql(
|
485
|
-
static VALUE ensure_func(
|
484
|
+
static VALUE exec_sql(VALUE varg);
|
485
|
+
static VALUE ensure_func(VALUE varg);
|
486
486
|
|
487
487
|
/*
|
488
488
|
* utility function to execute a single SQL statement
|
@@ -503,8 +503,9 @@ sword oci8_exec_sql(oci8_svcctx_t *svcctx, const char *sql_text, ub4 num_define_
|
|
503
503
|
return (sword)rb_ensure(exec_sql, (VALUE)&arg, ensure_func, (VALUE)&arg);
|
504
504
|
}
|
505
505
|
|
506
|
-
static VALUE exec_sql(
|
506
|
+
static VALUE exec_sql(VALUE varg)
|
507
507
|
{
|
508
|
+
cb_arg_t *arg = (cb_arg_t *)varg;
|
508
509
|
ub4 pos;
|
509
510
|
sword rv;
|
510
511
|
|
@@ -546,8 +547,9 @@ static VALUE exec_sql(cb_arg_t *arg)
|
|
546
547
|
return (VALUE)rv;
|
547
548
|
}
|
548
549
|
|
549
|
-
static VALUE ensure_func(
|
550
|
+
static VALUE ensure_func(VALUE varg)
|
550
551
|
{
|
552
|
+
cb_arg_t *arg = (cb_arg_t *)varg;
|
551
553
|
if (arg->stmtp != NULL) {
|
552
554
|
OCIStmtRelease(arg->stmtp, oci8_errhp, NULL, 0, OCI_DEFAULT);
|
553
555
|
}
|
data/ext/oci8/oraconf.rb
CHANGED
@@ -250,7 +250,6 @@ class OraConf
|
|
250
250
|
def self.get
|
251
251
|
original_CFLAGS = $CFLAGS
|
252
252
|
original_defs = $defs
|
253
|
-
ic_dir = nil
|
254
253
|
begin
|
255
254
|
# check Oracle instant client
|
256
255
|
if with_config('instant-client')
|
@@ -262,11 +261,17 @@ class OraConf
|
|
262
261
|
=======================================================
|
263
262
|
EOS
|
264
263
|
end
|
265
|
-
|
266
|
-
if
|
267
|
-
OraConfIC.new(
|
264
|
+
inc, lib = dir_config('instant-client')
|
265
|
+
if inc && lib
|
266
|
+
OraConfIC.new(inc, lib)
|
268
267
|
else
|
269
|
-
|
268
|
+
base = guess_ic_dir
|
269
|
+
if base
|
270
|
+
inc, lib = guess_dirs_from_ic_base(base)
|
271
|
+
OraConfIC.new(inc, lib)
|
272
|
+
else
|
273
|
+
OraConfFC.new
|
274
|
+
end
|
270
275
|
end
|
271
276
|
rescue
|
272
277
|
case ENV['LANG']
|
@@ -298,6 +303,44 @@ EOS
|
|
298
303
|
end
|
299
304
|
end
|
300
305
|
|
306
|
+
# Guess the include and directory paths from
|
307
|
+
def self.guess_dirs_from_ic_base(ic_dir)
|
308
|
+
if ic_dir =~ /^\/usr\/lib(?:64)?\/oracle\/(\d+(?:\.\d+)*)\/client(64)?\/lib(?:64)?/
|
309
|
+
# rpm package
|
310
|
+
# x86 rpms after 11.1.0.7.0:
|
311
|
+
# library: /usr/lib/oracle/X.X/client/lib/
|
312
|
+
# include: /usr/include/oracle/X.X/client/
|
313
|
+
#
|
314
|
+
# x86_64 rpms after 11.1.0.7.0:
|
315
|
+
# library: /usr/lib/oracle/X.X/client64/lib/
|
316
|
+
# include: /usr/include/oracle/X.X/client64/
|
317
|
+
#
|
318
|
+
# x86 rpms before 11.1.0.6.0:
|
319
|
+
# library: /usr/lib/oracle/X.X.X.X/client/lib/
|
320
|
+
# include: /usr/include/oracle/X.X.X.X/client/
|
321
|
+
#
|
322
|
+
# x86_64 rpms before 11.1.0.6.0:
|
323
|
+
# library: /usr/lib/oracle/X.X.X.X/client64/lib/
|
324
|
+
# include: /usr/include/oracle/X.X.X.X/client64/
|
325
|
+
#
|
326
|
+
# third-party x86_64 rpms(*1):
|
327
|
+
# library: /usr/lib64/oracle/X.X.X.X/client/lib/
|
328
|
+
# or /usr/lib64/oracle/X.X.X.X/client/lib64/
|
329
|
+
# include: /usr/include/oracle/X.X.X.X/client/
|
330
|
+
#
|
331
|
+
# *1 These had been used before Oracle released official x86_64 rpms.
|
332
|
+
#
|
333
|
+
lib_dir = ic_dir
|
334
|
+
inc_dir = "/usr/include/oracle/#{$1}/client#{$2}"
|
335
|
+
else
|
336
|
+
# zip package
|
337
|
+
lib_dir = ic_dir
|
338
|
+
inc_dir = "#{ic_dir}/sdk/include"
|
339
|
+
end
|
340
|
+
|
341
|
+
[inc_dir, lib_dir]
|
342
|
+
end
|
343
|
+
|
301
344
|
def self.ld_envs
|
302
345
|
@@ld_envs
|
303
346
|
end
|
@@ -316,8 +359,9 @@ EOS
|
|
316
359
|
end
|
317
360
|
end
|
318
361
|
|
319
|
-
def self.
|
320
|
-
puts "
|
362
|
+
def self.guess_ic_dir
|
363
|
+
puts "attempting to locate oracle-instantclient..."
|
364
|
+
puts "checking load library path... "
|
321
365
|
STDOUT.flush
|
322
366
|
|
323
367
|
# get library load path names
|
@@ -947,53 +991,20 @@ end
|
|
947
991
|
|
948
992
|
# OraConf for Instant Client
|
949
993
|
class OraConfIC < OraConf
|
950
|
-
def initialize(
|
994
|
+
def initialize(inc_dir, lib_dir)
|
951
995
|
init
|
952
996
|
|
953
|
-
if ic_dir =~ /^\/usr\/lib(?:64)?\/oracle\/(\d+(?:\.\d+)*)\/client(64)?\/lib(?:64)?/
|
954
|
-
# rpm package
|
955
|
-
# x86 rpms after 11.1.0.7.0:
|
956
|
-
# library: /usr/lib/oracle/X.X/client/lib/
|
957
|
-
# include: /usr/include/oracle/X.X/client/
|
958
|
-
#
|
959
|
-
# x86_64 rpms after 11.1.0.7.0:
|
960
|
-
# library: /usr/lib/oracle/X.X/client64/lib/
|
961
|
-
# include: /usr/include/oracle/X.X/client64/
|
962
|
-
#
|
963
|
-
# x86 rpms before 11.1.0.6.0:
|
964
|
-
# library: /usr/lib/oracle/X.X.X.X/client/lib/
|
965
|
-
# include: /usr/include/oracle/X.X.X.X/client/
|
966
|
-
#
|
967
|
-
# x86_64 rpms before 11.1.0.6.0:
|
968
|
-
# library: /usr/lib/oracle/X.X.X.X/client64/lib/
|
969
|
-
# include: /usr/include/oracle/X.X.X.X/client64/
|
970
|
-
#
|
971
|
-
# third-party x86_64 rpms(*1):
|
972
|
-
# library: /usr/lib64/oracle/X.X.X.X/client/lib/
|
973
|
-
# or /usr/lib64/oracle/X.X.X.X/client/lib64/
|
974
|
-
# include: /usr/include/oracle/X.X.X.X/client/
|
975
|
-
#
|
976
|
-
# *1 These had been used before Oracle released official x86_64 rpms.
|
977
|
-
#
|
978
|
-
lib_dir = ic_dir
|
979
|
-
inc_dir = "/usr/include/oracle/#{$1}/client#{$2}"
|
980
|
-
else
|
981
|
-
# zip package
|
982
|
-
lib_dir = ic_dir
|
983
|
-
inc_dir = "#{ic_dir}/sdk/include"
|
984
|
-
end
|
985
|
-
|
986
997
|
if RUBY_PLATFORM =~ /mswin32|mswin64|cygwin|mingw32|bccwin32/ # when Windows
|
987
|
-
unless File.exist?("#{
|
998
|
+
unless File.exist?("#{lib_dir}/sdk/lib/msvc/oci.lib")
|
988
999
|
raise <<EOS
|
989
1000
|
Could not compile with Oracle instant client.
|
990
|
-
#{
|
1001
|
+
#{lib_dir}/sdk/lib/msvc/oci.lib could not be found.
|
991
1002
|
EOS
|
992
1003
|
raise 'failed'
|
993
1004
|
end
|
994
1005
|
@cflags = " \"-I#{inc_dir}\""
|
995
1006
|
@cflags += " -D_int64=\"long long\"" if RUBY_PLATFORM =~ /cygwin|mingw32/
|
996
|
-
@libs = get_libs("#{
|
1007
|
+
@libs = get_libs("#{lib_dir}/sdk/lib")
|
997
1008
|
ld_path = nil
|
998
1009
|
else
|
999
1010
|
@cflags = " -I#{inc_dir}"
|
data/ext/oci8/oradate.c
CHANGED
@@ -198,7 +198,7 @@ static VALUE ora_date_initialize_copy(VALUE lhs, VALUE rhs)
|
|
198
198
|
*
|
199
199
|
* @return [OraDate]
|
200
200
|
*/
|
201
|
-
static VALUE ora_date_s_now(
|
201
|
+
static VALUE ora_date_s_now(VALUE klass)
|
202
202
|
{
|
203
203
|
VALUE obj = ora_date_s_allocate(klass);
|
204
204
|
ora_date_t *od = check_oradate(obj);
|
data/ext/oci8/win32.c
CHANGED
@@ -26,8 +26,9 @@ typedef struct {
|
|
26
26
|
HKEY hSubKey;
|
27
27
|
} enum_homes_arg_t;
|
28
28
|
|
29
|
-
static VALUE enum_homes_real(
|
29
|
+
static VALUE enum_homes_real(VALUE varg)
|
30
30
|
{
|
31
|
+
enum_homes_arg_t *arg = (enum_homes_arg_t *)varg;
|
31
32
|
LONG rv;
|
32
33
|
DWORD type;
|
33
34
|
DWORD idx;
|
@@ -77,8 +78,9 @@ static VALUE enum_homes_real(enum_homes_arg_t *arg)
|
|
77
78
|
return Qnil;
|
78
79
|
}
|
79
80
|
|
80
|
-
static VALUE enum_homes_ensure(
|
81
|
+
static VALUE enum_homes_ensure(VALUE varg)
|
81
82
|
{
|
83
|
+
enum_homes_arg_t *arg = (enum_homes_arg_t *)varg;
|
82
84
|
if (arg->hKey != NULL) {
|
83
85
|
RegCloseKey(arg->hKey);
|
84
86
|
arg->hKey = NULL;
|
data/lib/oci8.rb
CHANGED
@@ -11,8 +11,11 @@ if RUBY_PLATFORM =~ /cygwin/
|
|
11
11
|
# Cygwin manages environment variables by itself.
|
12
12
|
# They don't synchroize with Win32's ones.
|
13
13
|
# This set some Oracle's environment variables to win32's enviroment.
|
14
|
-
require '
|
15
|
-
win32setenv =
|
14
|
+
require 'fiddle'
|
15
|
+
win32setenv = Fiddle::Function.new( Fiddle.dlopen('Kernel32.dll')['SetEnvironmentVariableA'],
|
16
|
+
[Fiddle::TYPE_VOIDP,Fiddle::TYPE_VOIDP],
|
17
|
+
Fiddle::TYPE_INT )
|
18
|
+
|
16
19
|
['NLS_LANG', 'TNS_ADMIN', 'LOCAL'].each do |name|
|
17
20
|
val = ENV[name]
|
18
21
|
win32setenv.call(name, val && val.dup)
|
data/lib/oci8/version.rb
CHANGED
data/setup.rb
CHANGED
@@ -189,7 +189,16 @@ class ConfigTable
|
|
189
189
|
'the make program to compile ruby extentions' ] ],
|
190
190
|
[ 'without-ext', [ 'no',
|
191
191
|
'yes/no',
|
192
|
-
'does not compile/install ruby extentions' ] ]
|
192
|
+
'does not compile/install ruby extentions' ] ],
|
193
|
+
[ 'with-instant-client-dir', ['',
|
194
|
+
'path',
|
195
|
+
'path to the Oracle instant client directory'] ],
|
196
|
+
[ 'with-instant-client-lib', ['',
|
197
|
+
'path',
|
198
|
+
'path to the Oracle instant client libraries'] ],
|
199
|
+
[ 'with-instant-client-include', ['',
|
200
|
+
'path',
|
201
|
+
'path to the Oracle instant client header files'] ]
|
193
202
|
]
|
194
203
|
multipackage_descripters = [
|
195
204
|
[ 'with', [ '',
|
@@ -277,7 +286,7 @@ class ConfigTable
|
|
277
286
|
|
278
287
|
def initialize_from_table
|
279
288
|
@table = {}
|
280
|
-
DESCRIPTER.each do |k, (default,
|
289
|
+
DESCRIPTER.each do |k, (default, *)|
|
281
290
|
@table[k] = default
|
282
291
|
end
|
283
292
|
end
|
data/test/README.md
CHANGED
@@ -7,12 +7,8 @@ Before running unit test:
|
|
7
7
|
```
|
8
8
|
2. Create user ruby
|
9
9
|
```sql
|
10
|
-
SQL> CREATE USER ruby IDENTIFIED BY oci8;
|
11
|
-
|
12
|
-
or
|
13
|
-
```sql
|
14
|
-
SQL> CREATE USER ruby IDENTIFIED BY oci8
|
15
|
-
2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
|
10
|
+
SQL> CREATE USER ruby IDENTIFIED BY oci8 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
|
11
|
+
SQL> alter user ruby quota unlimited on users;
|
16
12
|
```
|
17
13
|
3. Grant the privilege to connect and execute.
|
18
14
|
```sql
|
@@ -27,6 +23,7 @@ Before running unit test:
|
|
27
23
|
5. Create object types
|
28
24
|
```sql
|
29
25
|
SQL> @test/setup_test_object.sql
|
26
|
+
SQL> @test/setup_test_package.sql
|
30
27
|
```
|
31
28
|
6. change $dbname in test/config.rb.
|
32
29
|
|
data/test/test_break.rb
CHANGED
@@ -22,9 +22,8 @@ class TestBreak < Minitest::Test
|
|
22
22
|
@@server_is_runing_on_windows = nil
|
23
23
|
def server_is_runing_on_windows?
|
24
24
|
if @@server_is_runing_on_windows.nil?
|
25
|
-
|
26
|
-
|
27
|
-
@@server_is_runing_on_windows = true if row[0].include? 'Windows'
|
25
|
+
@conn.exec('select dbms_utility.port_string from dual') do |row|
|
26
|
+
@@server_is_runing_on_windows = row[0].include? '/WIN'
|
28
27
|
end
|
29
28
|
end
|
30
29
|
@@server_is_runing_on_windows
|
data/test/test_datetime.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'oci8'
|
2
2
|
require File.dirname(__FILE__) + '/config'
|
3
|
-
require 'scanf'
|
4
3
|
|
5
4
|
class TestDateTime < Minitest::Test
|
6
5
|
|
@@ -28,6 +27,12 @@ class TestDateTime < Minitest::Test
|
|
28
27
|
convert_to_datetime($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i, subsec, $8)
|
29
28
|
end
|
30
29
|
|
30
|
+
# 'YYYY-MM-DD HH24:MI:SS' or 'YYYY-MM-DD HH24:MI:SS.FF6' to array
|
31
|
+
def string_to_array(str)
|
32
|
+
/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)(?:\.(\d+))?/ =~ str
|
33
|
+
[$1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i, $7 ? $7.to_i / 1000 : 0]
|
34
|
+
end
|
35
|
+
|
31
36
|
def setup
|
32
37
|
@conn = get_oci8_connection
|
33
38
|
end
|
@@ -43,7 +48,7 @@ class TestDateTime < Minitest::Test
|
|
43
48
|
@conn.exec(<<-EOS) do |row|
|
44
49
|
SELECT TO_DATE('#{date}', 'YYYY-MM-DD HH24:MI:SS') FROM dual
|
45
50
|
EOS
|
46
|
-
assert_equal(Time.local(*date
|
51
|
+
assert_equal(Time.local(*string_to_array(date)), row[0])
|
47
52
|
end
|
48
53
|
end
|
49
54
|
end
|
@@ -94,7 +99,7 @@ EOS
|
|
94
99
|
@conn.exec(<<-EOS) do |row|
|
95
100
|
SELECT TO_TIMESTAMP('#{date}', 'YYYY-MM-DD HH24:MI:SS.FF') FROM dual
|
96
101
|
EOS
|
97
|
-
assert_equal(Time.local(*date
|
102
|
+
assert_equal(Time.local(*string_to_array(date)), row[0])
|
98
103
|
end
|
99
104
|
end
|
100
105
|
end
|
metadata
CHANGED
@@ -1,34 +1,27 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-oci8
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 2
|
8
|
-
- 7
|
9
|
-
version: 2.2.7
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.2.8
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Kubo Takehiro
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
date: 2019-01-06 00:00:00 +09:00
|
18
|
-
default_executable:
|
12
|
+
date: 2020-01-11 00:00:00.000000000 Z
|
19
13
|
dependencies: []
|
14
|
+
description: ! 'ruby-oci8 is a ruby interface for Oracle using OCI8 API. It is available
|
15
|
+
with Oracle 10g or later including Oracle Instant Client.
|
20
16
|
|
21
|
-
|
22
|
-
ruby-oci8 is a ruby interface for Oracle using OCI8 API. It is available with Oracle 10g or later including Oracle Instant Client.
|
23
|
-
|
17
|
+
'
|
24
18
|
email: kubo@jiubao.org
|
25
19
|
executables: []
|
26
|
-
|
27
|
-
extensions:
|
20
|
+
extensions:
|
28
21
|
- ext/oci8/extconf.rb
|
29
|
-
extra_rdoc_files:
|
22
|
+
extra_rdoc_files:
|
30
23
|
- README.md
|
31
|
-
files:
|
24
|
+
files:
|
32
25
|
- .yardopts
|
33
26
|
- COPYING
|
34
27
|
- COPYING_old
|
@@ -142,39 +135,31 @@ files:
|
|
142
135
|
- test/test_package_type.rb
|
143
136
|
- test/test_properties.rb
|
144
137
|
- test/test_rowid.rb
|
145
|
-
has_rdoc: true
|
146
138
|
homepage: http://www.rubydoc.info/github/kubo/ruby-oci8
|
147
|
-
licenses:
|
139
|
+
licenses:
|
148
140
|
- BSD-2-Clause
|
149
141
|
post_install_message:
|
150
142
|
rdoc_options: []
|
151
|
-
|
152
|
-
require_paths:
|
143
|
+
require_paths:
|
153
144
|
- lib
|
154
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
155
146
|
none: false
|
156
|
-
requirements:
|
157
|
-
- -
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
segments:
|
160
|
-
- 1
|
161
|
-
- 9
|
162
|
-
- 1
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
163
150
|
version: 1.9.1
|
164
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
152
|
none: false
|
166
|
-
requirements:
|
167
|
-
- -
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
|
170
|
-
- 0
|
171
|
-
version: "0"
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
172
157
|
requirements: []
|
173
|
-
|
174
158
|
rubyforge_project:
|
175
|
-
rubygems_version: 1.
|
159
|
+
rubygems_version: 1.8.11
|
176
160
|
signing_key:
|
177
161
|
specification_version: 3
|
178
162
|
summary: Ruby interface for Oracle using OCI8 API
|
179
|
-
test_files:
|
163
|
+
test_files:
|
180
164
|
- test/test_all.rb
|
165
|
+
has_rdoc:
|