ruby-oci8 2.2.7 → 2.2.8
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.
- 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:
|