ruby-oci8 2.2.5.1-x86-mingw32 → 2.2.6-x86-mingw32
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 +68 -0
- data/NEWS +39 -0
- data/README.md +1 -1
- data/dist-files +1 -0
- data/docs/install-on-osx.md +1 -1
- data/lib/oci8.rb +2 -0
- data/lib/oci8/metadata.rb +9 -1
- data/lib/oci8/object.rb +10 -0
- data/lib/oci8/oci8.rb +6 -0
- data/lib/oci8/oracle_version.rb +11 -1
- data/lib/oci8/version.rb +1 -1
- data/lib/oci8lib_191.so +0 -0
- data/lib/oci8lib_200.so +0 -0
- data/lib/oci8lib_210.so +0 -0
- data/lib/oci8lib_220.so +0 -0
- data/lib/oci8lib_230.so +0 -0
- data/lib/oci8lib_240.so +0 -0
- data/lib/oci8lib_250.so +0 -0
- data/lib/ruby-oci8.rb +0 -3
- data/test/setup_test_object.sql +21 -13
- data/test/test_all.rb +1 -0
- data/test/test_clob.rb +3 -16
- data/test/test_object.rb +33 -9
- data/test/test_oci8.rb +15 -1
- data/test/test_package_type.rb +15 -3
- data/test/test_properties.rb +17 -0
- metadata +5 -5
    
        data/ChangeLog
    CHANGED
    
    | @@ -1,3 +1,71 @@ | |
| 1 | 
            +
            2018-08-22  Kubo Takehiro <kubo@jiubao.org>
         | 
| 2 | 
            +
            	* NEWS: Add changes between 2.2.5.1 and 2.2.6
         | 
| 3 | 
            +
            	* lib/oci8/version.rb: Update to 2.2.6
         | 
| 4 | 
            +
            	* mkpkg-win32.rb: Don't test with self-build ruby 2.4.
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            2018-08-22  Kubo Takehiro <kubo@jiubao.org>
         | 
| 7 | 
            +
            	* ext/oci8/oci8lib.c: Load a Oracle client library which doesn't have
         | 
| 8 | 
            +
            	    version number suffix also on Unix when runtime-check is enabled.
         | 
| 9 | 
            +
            	    Oracle version numbers are incremented yearly sice Oracle 18c.
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            2018-08-22  Kubo Takehiro <kubo@jiubao.org>
         | 
| 12 | 
            +
            	* ext/oci8/hook_funcs.c, ext/oci8/win32.c: Suppress warnings:
         | 
| 13 | 
            +
            	   "'raise_error' defined but not used" and "'strncpy' specified
         | 
| 14 | 
            +
            	   bound 512 equals destination size".
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            2018-08-19  Kubo Takehiro <kubo@jiubao.org>
         | 
| 17 | 
            +
            	* ext/oci8/hook_funcs.c: Not depend on Oracle version number
         | 
| 18 | 
            +
            	   of Oracle client file name suffix when hooking functions.
         | 
| 19 | 
            +
            	   (rsim/oracle-enhanced#1754)
         | 
| 20 | 
            +
            	* test/test_all.rb, test/test_properties.rb, dist-files:
         | 
| 21 | 
            +
            	   Add tests for hooking.
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            2018-08-18  Kubo Takehiro <kubo@jiubao.org>
         | 
| 24 | 
            +
            	* test/test_oci8.rb: Fix to pass a test when the client is 11g
         | 
| 25 | 
            +
            	    and the server is 18c. client_driver in v$session_connect_info
         | 
| 26 | 
            +
            	    has an extra space at the end.
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            2018-08-18  Kubo Takehiro <kubo@jiubao.org>
         | 
| 29 | 
            +
            	* ext/oci8/apiwrap.rb, ext/oci8/apiwrap.yml, ext/oci8/oci8.c,
         | 
| 30 | 
            +
            	  ext/oci8/oci8.h, lib/oci8/oci8.rb, lib/oci8/oracle_version.rb,
         | 
| 31 | 
            +
            	  test/test_oci8.rb: Fix OCI8#oracle_server_version to get
         | 
| 32 | 
            +
            	    full version of Oracle 18c.
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            2018-08-18  Kubo Takehiro <kubo@jiubao.org>
         | 
| 35 | 
            +
            	* lib/oci8/metadata.rb: Update doc comments of OCI8::Metadata::ArgBase#level
         | 
| 36 | 
            +
            	    and OCI8::Metadata::ArgBase#arguments.
         | 
| 37 | 
            +
            	* test/test_package_type.rb, lib/oci8.rb: Fix to pass tests on Oracle 18c.
         | 
| 38 | 
            +
            	    Detailed user-defined type information used in arguments isn't available
         | 
| 39 | 
            +
            	    on Oracle 18c.
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            2018-08-12  Kubo Takehiro <kubo@jiubao.org>
         | 
| 42 | 
            +
            	* test/test_clob.rb: Skip TestCLob#test_github_issue_20 because it
         | 
| 43 | 
            +
            	    takes 4 minutes to test it in my Linux box.
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            2018-08-12  Kubo Takehiro <kubo@jiubao.org>
         | 
| 46 | 
            +
            	* ext/oci8/lob.c, test/test_clob.rb: LOB#sync, LOB#sync= and LOB#flush
         | 
| 47 | 
            +
            	    do nothing now. They have not worked by mistake from the beginning
         | 
| 48 | 
            +
            	    because incorrect arguments has been passed to OCILobOpen().
         | 
| 49 | 
            +
            	    Moreover it crashed Oracle 18c server-side processes and caused
         | 
| 50 | 
            +
            	    "ORA-03113: end-of-file on communication channel."
         | 
| 51 | 
            +
            	    (github issue #198)
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            2018-01-28  Kubo Takehiro <kubo@jiubao.org>
         | 
| 54 | 
            +
            	* ext/oci8/object.c, lib/oci8/object.rb: Add timestamp with time zone
         | 
| 55 | 
            +
            	    data type support in object type attributes.
         | 
| 56 | 
            +
            	    (github issue #185)
         | 
| 57 | 
            +
            	* test/setup_test_object.sql, test/test_object.rb: Add tests for
         | 
| 58 | 
            +
            	    timestamp and timestamp with time zone.
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            2018-01-23  Kubo Takehiro <kubo@jiubao.org>
         | 
| 61 | 
            +
            	* ext/oci8/object.c, ext/oci8/oci8.h, lib/oci8/object.rb:
         | 
| 62 | 
            +
            	    Add timestamp data type support in object type attributes.
         | 
| 63 | 
            +
            	    (github issue #185)
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            2017-12-27  Kubo Takehiro <kubo@jiubao.org>
         | 
| 66 | 
            +
            	* mkpkg-win32.rb: Remove '-rubygems' in the command line to run tests.
         | 
| 67 | 
            +
            	    `ubygems.rb` was removed in ruby 2.5.
         | 
| 68 | 
            +
             | 
| 1 69 | 
             
            2017-12-27  Kubo Takehiro <kubo@jiubao.org>
         | 
| 2 70 | 
             
            	* NEWS: Add changes between 2.2.5 and 2.2.5.1
         | 
| 3 71 | 
             
            	* lib/oci8/version.rb: Update to 2.2.5.1
         | 
    
        data/NEWS
    CHANGED
    
    | @@ -1,5 +1,44 @@ | |
| 1 1 | 
             
            # @markup markdown
         | 
| 2 2 |  | 
| 3 | 
            +
            2.2.6
         | 
| 4 | 
            +
            =====
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            This release fixed issues about Oracle 18c except one.
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            Fixed issue
         | 
| 9 | 
            +
            -----------
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            ### Setting some properties failed with Oracle 18c client
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            Setting `OCI8::properties[:tcp_keepalive_time]` or `OCI8::properties[:cancel_read_at_exit]`
         | 
| 14 | 
            +
            failed with the error message "No shared library is found to hook" when Oracle
         | 
| 15 | 
            +
            client version is 18c.
         | 
| 16 | 
            +
            (rsim/oracle-enhanced#1754)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ### Fix `OCI8#oracle_server_version` to get full version of Oracle 18c
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            `OCI8#oracle_server_version` returned Oracle version number whose
         | 
| 21 | 
            +
            number components after the first dot are zeros such as '18.0.0.0.0'
         | 
| 22 | 
            +
            even when the server version is `18.3.0.0.0`. This issue was fixed by
         | 
| 23 | 
            +
            using a new OCI function. However the function is available since
         | 
| 24 | 
            +
            Oracle 18c client. So when the Oracle client version is 12c or earlier
         | 
| 25 | 
            +
            and the Oracle server version is 18c or later, it cannot get the *full*
         | 
| 26 | 
            +
            Oracle version number.
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            ### Fix tests when the Oracle server version is 18c.
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            ### LOB#sync, LOB#sync= and LOB#flush do nothing now.
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            They have not worked by mistake from the beginning because incorrect
         | 
| 33 | 
            +
            arguments has been passed to OCILobOpen(). Moreover it crashed Oracle
         | 
| 34 | 
            +
            18c server-side processes and caused "ORA-03113: end-of-file on
         | 
| 35 | 
            +
            communication channel."
         | 
| 36 | 
            +
            (github issue #198)
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            ### `unsupported typecode timestamp` when timestamp with time zone is in object type attributes.
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            (github issue #185)
         | 
| 41 | 
            +
             | 
| 3 42 | 
             
            2.2.5.1
         | 
| 4 43 | 
             
            =======
         | 
| 5 44 |  | 
    
        data/README.md
    CHANGED
    
    | @@ -2,7 +2,7 @@ Ruby-oci8 | |
| 2 2 | 
             
            =========
         | 
| 3 3 |  | 
| 4 4 | 
             
            [](http://badge.fury.io/rb/ruby-oci8)
         | 
| 5 | 
            -
            [](https://travis-ci.org/kubo/ruby-oci8)
         | 
| 6 6 |  | 
| 7 7 | 
             
            What is ruby-oci8
         | 
| 8 8 | 
             
            -----------------
         | 
    
        data/dist-files
    CHANGED
    
    
    
        data/docs/install-on-osx.md
    CHANGED
    
    | @@ -39,7 +39,7 @@ Download the following packages from [Oracle Technology Network][] | |
| 39 39 |  | 
| 40 40 | 
             
            * Instant Client Package - Basic (`instantclient-basic-macos.x64-12.1.0.2.0.zip`) or Basic Lite (`instantclient-basiclite-macos.x64-12.1.0.2.0.zip`)
         | 
| 41 41 | 
             
            * Instant Client Package - SDK (`instantclient-sdk-macos.x64-12.1.0.2.0.zip`)
         | 
| 42 | 
            -
            * Instant Client Package - SQL*Plus (`instantclient- | 
| 42 | 
            +
            * Instant Client Package - SQL*Plus (`instantclient-sqlplus-macos.x64-12.1.0.2.0.zip`) (optionally) 
         | 
| 43 43 |  | 
| 44 44 | 
             
            ### Install Oracle Instant Client Packages via Homebrew
         | 
| 45 45 |  | 
    
        data/lib/oci8.rb
    CHANGED
    
    | @@ -140,6 +140,8 @@ class OCI8 | |
| 140 140 | 
             
              ORAVER_11_1 = OCI8::OracleVersion.new(11, 1)
         | 
| 141 141 | 
             
              # @private
         | 
| 142 142 | 
             
              ORAVER_12_1 = OCI8::OracleVersion.new(12, 1)
         | 
| 143 | 
            +
              # @private
         | 
| 144 | 
            +
              ORAVER_18 = OCI8::OracleVersion.new(18)
         | 
| 143 145 |  | 
| 144 146 | 
             
              # @private
         | 
| 145 147 | 
             
              @@oracle_client_version = OCI8::OracleVersion.new(self.oracle_client_vernum)
         | 
    
        data/lib/oci8/metadata.rb
    CHANGED
    
    | @@ -1503,7 +1503,11 @@ class OCI8 | |
| 1503 1503 | 
             
                    attr_get_sb1(OCI_ATTR_SCALE)
         | 
| 1504 1504 | 
             
                  end
         | 
| 1505 1505 |  | 
| 1506 | 
            -
                  # The  | 
| 1506 | 
            +
                  # The nest level.
         | 
| 1507 | 
            +
                  #
         | 
| 1508 | 
            +
                  # Oracle manual says that it always returns zero. However it returns
         | 
| 1509 | 
            +
                  # the depth of {OCI8::ArgBase#arguments} calls when #arguments returns
         | 
| 1510 | 
            +
                  # a non-empty array.
         | 
| 1507 1511 | 
             
                  def level
         | 
| 1508 1512 | 
             
                    attr_get_ub2(OCI_ATTR_LEVEL)
         | 
| 1509 1513 | 
             
                  end
         | 
| @@ -1607,6 +1611,10 @@ class OCI8 | |
| 1607 1611 |  | 
| 1608 1612 | 
             
                  # The list of arguments at the next level (when the argument is
         | 
| 1609 1613 | 
             
                  # of a record or table type).
         | 
| 1614 | 
            +
                  #
         | 
| 1615 | 
            +
                  # This method returns an array containing type information when
         | 
| 1616 | 
            +
                  # the type is a user-defined type and the Oracle server version
         | 
| 1617 | 
            +
                  # is 12c or earlier. Otherwise, it returns an empty array.
         | 
| 1610 1618 | 
             
                  def arguments
         | 
| 1611 1619 | 
             
                    @arguments ||= list_arguments.to_a
         | 
| 1612 1620 | 
             
                  end
         | 
    
        data/lib/oci8/object.rb
    CHANGED
    
    | @@ -493,6 +493,16 @@ EOS | |
| 493 493 | 
             
                     Proc.new do |val| datetime_to_array(val, :date) end, # set_proc
         | 
| 494 494 | 
             
                     Proc.new do |val| array_to_time(val, :local) end, # get_proc
         | 
| 495 495 | 
             
                    ]
         | 
| 496 | 
            +
                  when :timestamp
         | 
| 497 | 
            +
                    [ATTR_TIMESTAMP, con, SIZE_OF_POINTER, 2, ALIGNMENT_OF_POINTER,
         | 
| 498 | 
            +
                     Proc.new do |val| datetime_to_array(val, :timestamp) end, # set_proc
         | 
| 499 | 
            +
                     Proc.new do |val| array_to_time(val, :local) end, # get_proc
         | 
| 500 | 
            +
                    ]
         | 
| 501 | 
            +
                  when :timestamp_tz
         | 
| 502 | 
            +
                    [ATTR_TIMESTAMP_TZ, con, SIZE_OF_POINTER, 2, ALIGNMENT_OF_POINTER,
         | 
| 503 | 
            +
                     Proc.new do |val| datetime_to_array(val, :timestamp_tz) end, # set_proc
         | 
| 504 | 
            +
                     Proc.new do |val| array_to_time(val, nil) end, # get_proc
         | 
| 505 | 
            +
                    ]
         | 
| 496 506 | 
             
                  when :binary_double
         | 
| 497 507 | 
             
                    [ATTR_BINARY_DOUBLE, nil, SIZE_OF_DOUBLE, 2, ALIGNMENT_OF_DOUBLE]
         | 
| 498 508 | 
             
                  when :binary_float
         | 
    
        data/lib/oci8/oci8.rb
    CHANGED
    
    | @@ -340,6 +340,12 @@ class OCI8 | |
| 340 340 |  | 
| 341 341 | 
             
              # Returns the Oracle server version.
         | 
| 342 342 | 
             
              #
         | 
| 343 | 
            +
              # When the Oracle client version is 12c or earlier and
         | 
| 344 | 
            +
              # the Oracle server version is 18c or later, this method
         | 
| 345 | 
            +
              # doesn't return *full* version number such as '18.3.0.0.0'.
         | 
| 346 | 
            +
              # It returns version number whose number components after
         | 
| 347 | 
            +
              # the first dot are zeros such as '18.0.0.0.0'.
         | 
| 348 | 
            +
              #
         | 
| 343 349 | 
             
              # @see OCI8.oracle_client_version
         | 
| 344 350 | 
             
              # @return [OCI8::OracleVersion]
         | 
| 345 351 | 
             
              def oracle_server_version
         | 
    
        data/lib/oci8/oracle_version.rb
    CHANGED
    
    | @@ -66,6 +66,12 @@ class OCI8 | |
| 66 66 | 
             
                    major, minor, update, patch, port_update = arg.split('.').collect do |v|
         | 
| 67 67 | 
             
                      v.to_i
         | 
| 68 68 | 
             
                    end
         | 
| 69 | 
            +
                  elsif arg >= 0x12000000
         | 
| 70 | 
            +
                    major  = (arg & 0xFF000000) >> 24
         | 
| 71 | 
            +
                    minor  = (arg & 0x00FF0000) >> 16
         | 
| 72 | 
            +
                    update = (arg & 0x0000F000) >> 12
         | 
| 73 | 
            +
                    patch  = (arg & 0x00000FF0) >>  4
         | 
| 74 | 
            +
                    port_update = (arg & 0x0000000F)
         | 
| 69 75 | 
             
                  elsif arg >= 0x08000000
         | 
| 70 76 | 
             
                    major  = (arg & 0xFF000000) >> 24
         | 
| 71 77 | 
             
                    minor  = (arg & 0x00F00000) >> 20
         | 
| @@ -80,7 +86,11 @@ class OCI8 | |
| 80 86 | 
             
                  @update = update || 0
         | 
| 81 87 | 
             
                  @patch = patch || 0
         | 
| 82 88 | 
             
                  @port_update = port_update || 0
         | 
| 83 | 
            -
                  @vernum =  | 
| 89 | 
            +
                  @vernum = if @major >= 18
         | 
| 90 | 
            +
                              (@major << 24) | (@minor << 16) | (@update << 12) | (@patch << 4) | @port_update
         | 
| 91 | 
            +
                            else
         | 
| 92 | 
            +
                              (@major << 24) | (@minor << 20) | (@update << 12) | (@patch << 8) | @port_update
         | 
| 93 | 
            +
                            end
         | 
| 84 94 | 
             
                end
         | 
| 85 95 |  | 
| 86 96 | 
             
                # Compares +self+ and +other+.
         | 
    
        data/lib/oci8/version.rb
    CHANGED
    
    
    
        data/lib/oci8lib_191.so
    CHANGED
    
    | Binary file | 
    
        data/lib/oci8lib_200.so
    CHANGED
    
    | Binary file | 
    
        data/lib/oci8lib_210.so
    CHANGED
    
    | Binary file | 
    
        data/lib/oci8lib_220.so
    CHANGED
    
    | Binary file | 
    
        data/lib/oci8lib_230.so
    CHANGED
    
    | Binary file | 
    
        data/lib/oci8lib_240.so
    CHANGED
    
    | Binary file | 
    
        data/lib/oci8lib_250.so
    CHANGED
    
    | Binary file | 
    
        data/lib/ruby-oci8.rb
    CHANGED
    
    
    
        data/test/setup_test_object.sql
    CHANGED
    
    | @@ -61,6 +61,8 @@ create type rb_test_obj as object ( | |
| 61 61 | 
             
              obj_array_val rb_test_obj_elem_array,
         | 
| 62 62 | 
             
              obj_ary_of_ary_val rb_test_obj_elem_ary_of_ary,
         | 
| 63 63 | 
             
              date_val date,
         | 
| 64 | 
            +
              timestamp_val timestamp(9),
         | 
| 65 | 
            +
              timestamp_tz_val timestamp(9) with time zone,
         | 
| 64 66 | 
             
            --  date_array_val rb_test_date_array,
         | 
| 65 67 |  | 
| 66 68 | 
             
              constructor function rb_test_obj(n number) return self as result,
         | 
| @@ -72,19 +74,23 @@ create type rb_test_obj as object ( | |
| 72 74 | 
             
              member procedure member_proc(n in integer)
         | 
| 73 75 | 
             
            )
         | 
| 74 76 | 
             
            /
         | 
| 75 | 
            -
            create  | 
| 76 | 
            -
             | 
| 77 | 
            +
            create type body rb_test_obj is
         | 
| 77 78 | 
             
              constructor function rb_test_obj(n number) return self as result is
         | 
| 78 | 
            -
                 | 
| 79 | 
            -
                 | 
| 80 | 
            -
             | 
| 81 | 
            -
                                 to_char(mod(round(n) * 5, 12) + 1, 'FM00') ||
         | 
| 82 | 
            -
                                 to_char(mod(round(n) * 7, 27) + 1, 'FM00') ||
         | 
| 83 | 
            -
                                 to_char(mod(round(n) * 9, 24), 'FM00') ||
         | 
| 84 | 
            -
                                 to_char(mod(round(n) * 11, 60), 'FM00') ||
         | 
| 85 | 
            -
                                 to_char(mod(round(n) * 13, 60), 'FM00'), 'yyyymmddhh24miss');
         | 
| 86 | 
            -
                end;
         | 
| 79 | 
            +
                str varchar(28);
         | 
| 80 | 
            +
                ts timestamp(9);
         | 
| 81 | 
            +
                ts_tz timestamp(9) with time zone;
         | 
| 87 82 | 
             
              begin
         | 
| 83 | 
            +
                str := to_char(1990 + n, 'FM0000') ||
         | 
| 84 | 
            +
                               to_char(mod(round(n) * 5, 12) + 1, 'FM00') ||
         | 
| 85 | 
            +
                               to_char(mod(round(n) * 7, 27) + 1, 'FM00') ||
         | 
| 86 | 
            +
                               to_char(mod(round(n) * 9, 24), 'FM00') ||
         | 
| 87 | 
            +
                               to_char(mod(round(n) * 11, 60), 'FM00') ||
         | 
| 88 | 
            +
                               to_char(mod(round(n) * 13, 60), 'FM00') ||
         | 
| 89 | 
            +
                               to_char(mod(round(n) * 333333333, 1000000000), 'FM000000000');
         | 
| 90 | 
            +
                ts := to_timestamp(str, 'yyyymmddhh24missff9');
         | 
| 91 | 
            +
                str := str || to_char(mod(round(n) * 15, 24) - 11, 'FMS00') ||
         | 
| 92 | 
            +
                              to_char(mod(round(n) * 17, 60), 'FM00');
         | 
| 93 | 
            +
                ts_tz := to_timestamp_tz(str, 'yyyymmddhh24missff9tzhtzm');
         | 
| 88 94 | 
             
                self.int_val := n;
         | 
| 89 95 | 
             
                self.flt_val := n;
         | 
| 90 96 | 
             
                self.num_val := n;
         | 
| @@ -96,7 +102,9 @@ create or replace type body rb_test_obj is | |
| 96 102 | 
             
                self.nclob_val := to_clob(n);
         | 
| 97 103 | 
             
                self.blob_val := to_blob(utl_raw.cast_to_raw(to_char(n)));
         | 
| 98 104 | 
             
                self.obj_val := rb_test_obj_elem(n, n + 1);
         | 
| 99 | 
            -
                self.date_val :=  | 
| 105 | 
            +
                self.date_val := ts;
         | 
| 106 | 
            +
                self.timestamp_val := ts;
         | 
| 107 | 
            +
                self.timestamp_tz_val := ts_tz;
         | 
| 100 108 | 
             
                if self.int_val != 1 then
         | 
| 101 109 | 
             
                  self.int_array_val := rb_test_int_array(n, n + 1, n + 2);
         | 
| 102 110 | 
             
                  self.flt_array_val := rb_test_flt_array(n, n + 1, n + 2);
         | 
| @@ -120,7 +128,7 @@ create or replace type body rb_test_obj is | |
| 120 128 |  | 
| 121 129 | 
             
              static function test_object_version return integer is
         | 
| 122 130 | 
             
              begin
         | 
| 123 | 
            -
                return  | 
| 131 | 
            +
                return 4;
         | 
| 124 132 | 
             
              end;
         | 
| 125 133 |  | 
| 126 134 | 
             
              static function class_func(n number) return rb_test_obj is
         | 
    
        data/test/test_all.rb
    CHANGED
    
    | @@ -26,6 +26,7 @@ require "#{srcdir}/test_oracle_version" | |
| 26 26 | 
             
            require "#{srcdir}/test_error"
         | 
| 27 27 | 
             
            require "#{srcdir}/test_connection_pool"
         | 
| 28 28 | 
             
            require "#{srcdir}/test_object"
         | 
| 29 | 
            +
            require "#{srcdir}/test_properties.rb"
         | 
| 29 30 |  | 
| 30 31 | 
             
            if OCI8.respond_to? :encoding
         | 
| 31 32 | 
             
              require "#{srcdir}/test_encoding"
         | 
    
        data/test/test_clob.rb
    CHANGED
    
    | @@ -24,22 +24,6 @@ class TestCLob < Minitest::Test | |
| 24 24 | 
             
                lob.close
         | 
| 25 25 | 
             
              end
         | 
| 26 26 |  | 
| 27 | 
            -
              def test_insert_with_flush
         | 
| 28 | 
            -
                filename = File.basename($lobfile)
         | 
| 29 | 
            -
                @conn.exec("DELETE FROM test_table WHERE filename = :1", filename)
         | 
| 30 | 
            -
                @conn.exec("INSERT INTO test_table(filename, content) VALUES (:1, EMPTY_CLOB())", filename)
         | 
| 31 | 
            -
                cursor = @conn.exec("SELECT content FROM test_table WHERE filename = :1 FOR UPDATE", filename)
         | 
| 32 | 
            -
                lob = cursor.fetch[0]
         | 
| 33 | 
            -
                lob.sync = false
         | 
| 34 | 
            -
                open($lobfile) do |f|
         | 
| 35 | 
            -
                  while s = f.read(1000)
         | 
| 36 | 
            -
                    lob.write(s)
         | 
| 37 | 
            -
                  end
         | 
| 38 | 
            -
                end
         | 
| 39 | 
            -
                lob.flush
         | 
| 40 | 
            -
                lob.close
         | 
| 41 | 
            -
              end
         | 
| 42 | 
            -
             | 
| 43 27 | 
             
              def test_insert_symbol
         | 
| 44 28 | 
             
                filename = 'test_symbol'
         | 
| 45 29 | 
             
                value = :foo_bar
         | 
| @@ -76,6 +60,9 @@ class TestCLob < Minitest::Test | |
| 76 60 |  | 
| 77 61 | 
             
              # https://github.com/kubo/ruby-oci8/issues/20
         | 
| 78 62 | 
             
              def test_github_issue_20
         | 
| 63 | 
            +
                # Skip this test if FULLTEST isn't set because it takes 4 minutes in my Linux box.
         | 
| 64 | 
            +
                return if ENV['FULLTEST']
         | 
| 65 | 
            +
             | 
| 79 66 | 
             
                lob1 = OCI8::CLOB.new(@conn, ' '  * (1024 * 1024))
         | 
| 80 67 | 
             
                lob1.read(1) # to suppress `warning: assigned but unused variable - lob1`
         | 
| 81 68 | 
             
                begin
         | 
    
        data/test/test_object.rb
    CHANGED
    
    | @@ -1,6 +1,12 @@ | |
| 1 1 | 
             
            require 'oci8'
         | 
| 2 2 | 
             
            require File.dirname(__FILE__) + '/config'
         | 
| 3 3 |  | 
| 4 | 
            +
            class Time
         | 
| 5 | 
            +
              def inspect
         | 
| 6 | 
            +
                self.strftime("%Y-%m-%d %H:%M:%S.%N %:z")
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
            end
         | 
| 9 | 
            +
             | 
| 4 10 | 
             
            conn = OCI8.new($dbuser, $dbpass, $dbname)
         | 
| 5 11 | 
             
            error_message = nil
         | 
| 6 12 | 
             
            begin
         | 
| @@ -22,7 +28,7 @@ begin | |
| 22 28 |  | 
| 23 29 | 
             
              begin
         | 
| 24 30 | 
             
                version = RbTestObj.test_object_version(conn)
         | 
| 25 | 
            -
                error_message = "Invalid test object version" if version !=  | 
| 31 | 
            +
                error_message = "Invalid test object version" if version != 4
         | 
| 26 32 | 
             
              rescue NoMethodError
         | 
| 27 33 | 
             
                raise unless $!.to_s.include?('test_object_version')
         | 
| 28 34 | 
             
                error_message = "rb_test_obj.test_object_version is not declared."
         | 
| @@ -100,7 +106,8 @@ class TestObj1 < Minitest::Test | |
| 100 106 | 
             
                attr_reader :obj_array_val
         | 
| 101 107 | 
             
                attr_reader :obj_ary_of_ary_val
         | 
| 102 108 | 
             
                attr_reader :date_val
         | 
| 103 | 
            -
             | 
| 109 | 
            +
                attr_reader :timestamp_val
         | 
| 110 | 
            +
                attr_reader :timestamp_tz_val
         | 
| 104 111 |  | 
| 105 112 | 
             
                attr_accessor :assertions
         | 
| 106 113 |  | 
| @@ -109,16 +116,28 @@ class TestObj1 < Minitest::Test | |
| 109 116 | 
             
                  @assertions = 0
         | 
| 110 117 | 
             
                end
         | 
| 111 118 |  | 
| 112 | 
            -
                def  | 
| 119 | 
            +
                def to_test_datetime(n, type)
         | 
| 113 120 | 
             
                  year = (1990 + n).round
         | 
| 114 121 | 
             
                  month = (n.round * 5) % 12 + 1
         | 
| 115 122 | 
             
                  mday = (n.round * 7) % 27 + 1
         | 
| 116 123 | 
             
                  hour = (n.round * 9) % 24
         | 
| 117 124 | 
             
                  minute = (n.round * 11) % 60
         | 
| 118 125 | 
             
                  sec = (n.round * 13) % 60
         | 
| 119 | 
            -
                   | 
| 126 | 
            +
                  nsec = if type == :date
         | 
| 127 | 
            +
                           0
         | 
| 128 | 
            +
                         else
         | 
| 129 | 
            +
                           ((n.round * 333_333_333) % 1_000_000_000).to_r / 1_000_000_000
         | 
| 130 | 
            +
                         end
         | 
| 131 | 
            +
                  tz = if type == :timestamp_tz
         | 
| 132 | 
            +
                         tzh = (n.round * 15) % 24 - 11
         | 
| 133 | 
            +
                         tzm = (n.round * 17) % 60
         | 
| 134 | 
            +
                         format('%+03d:%02d', tzh, tzm)
         | 
| 135 | 
            +
                       else
         | 
| 136 | 
            +
                         nil
         | 
| 137 | 
            +
                       end
         | 
| 138 | 
            +
                  convert_to_time(year, month, mday, hour, minute, sec, nsec, tz)
         | 
| 120 139 | 
             
                end
         | 
| 121 | 
            -
                private : | 
| 140 | 
            +
                private :to_test_datetime
         | 
| 122 141 |  | 
| 123 142 | 
             
                def next
         | 
| 124 143 | 
             
                  @n += 1.2
         | 
| @@ -135,7 +154,9 @@ class TestObj1 < Minitest::Test | |
| 135 154 | 
             
                  @nclob_val = @str_val
         | 
| 136 155 | 
             
                  @blob_val = @str_val
         | 
| 137 156 | 
             
                  @obj_val = ExpectedValObjElem.new(@int_val, @int_val + 1)
         | 
| 138 | 
            -
                  @date_val =  | 
| 157 | 
            +
                  @date_val = to_test_datetime(@n, :date)
         | 
| 158 | 
            +
                  @timestamp_val = to_test_datetime(@n, :timestamp)
         | 
| 159 | 
            +
                  @timestamp_tz_val = to_test_datetime(@n, :timestamp_tz)
         | 
| 139 160 | 
             
                  if @int_val == 1
         | 
| 140 161 | 
             
                    @int_array_val = nil
         | 
| 141 162 | 
             
                    @flt_array_val = nil
         | 
| @@ -199,7 +220,8 @@ class TestObj1 < Minitest::Test | |
| 199 220 | 
             
                    obj_array_val = val[18]
         | 
| 200 221 | 
             
                    obj_ary_of_ary_val = val[19]
         | 
| 201 222 | 
             
                    date_val = val[20]
         | 
| 202 | 
            -
             | 
| 223 | 
            +
                    timestamp_val = val[21]
         | 
| 224 | 
            +
                    timestamp_tz_val = val[22]
         | 
| 203 225 | 
             
                  else
         | 
| 204 226 | 
             
                    assert_instance_of(RbTestObj, val)
         | 
| 205 227 | 
             
                    int_val = val.int_val
         | 
| @@ -223,7 +245,8 @@ class TestObj1 < Minitest::Test | |
| 223 245 | 
             
                    obj_array_val = val.obj_array_val
         | 
| 224 246 | 
             
                    obj_ary_of_ary_val = val.obj_ary_of_ary_val
         | 
| 225 247 | 
             
                    date_val = val.date_val
         | 
| 226 | 
            -
             | 
| 248 | 
            +
                    timestamp_val = val.timestamp_val
         | 
| 249 | 
            +
                    timestamp_tz_val = val.timestamp_tz_val
         | 
| 227 250 | 
             
                  end
         | 
| 228 251 |  | 
| 229 252 | 
             
                  assert_equal(@int_val, int_val)
         | 
| @@ -267,7 +290,8 @@ class TestObj1 < Minitest::Test | |
| 267 290 | 
             
                    assert_nil(obj_ary_of_ary_val)
         | 
| 268 291 | 
             
                  end
         | 
| 269 292 | 
             
                  assert_equal(@date_val, date_val)
         | 
| 270 | 
            -
             | 
| 293 | 
            +
                  assert_equal(@timestamp_val, timestamp_val)
         | 
| 294 | 
            +
                  assert_equal(@timestamp_tz_val, timestamp_tz_val)
         | 
| 271 295 | 
             
                end
         | 
| 272 296 |  | 
| 273 297 | 
             
                def assert_array_in_delta(exp, val)
         | 
    
        data/test/test_oci8.rb
    CHANGED
    
    | @@ -491,9 +491,23 @@ EOS | |
| 491 491 | 
             
                                   else
         | 
| 492 492 | 
             
                                     raise "Unknown column size #{column_size}"
         | 
| 493 493 | 
             
                                   end
         | 
| 494 | 
            -
                  driver_name = cursor.fetch[0]
         | 
| 494 | 
            +
                  driver_name = cursor.fetch[0].strip
         | 
| 495 495 | 
             
                  cursor.close
         | 
| 496 496 | 
             
                  assert_equal(expected_value, driver_name)
         | 
| 497 497 | 
             
                end
         | 
| 498 498 | 
             
              end
         | 
| 499 | 
            +
             | 
| 500 | 
            +
              def test_server_version
         | 
| 501 | 
            +
                cursor = @conn.exec("select * from product_component_version where product like 'Oracle Database %'")
         | 
| 502 | 
            +
                row = cursor.fetch_hash
         | 
| 503 | 
            +
                cursor.close
         | 
| 504 | 
            +
                ver = if OCI8::oracle_client_version >= OCI8::ORAVER_18
         | 
| 505 | 
            +
                        row['VERSION_FULL'] || row['VERSION']
         | 
| 506 | 
            +
                      else
         | 
| 507 | 
            +
                        # OCI8#oracle_server_version could not get infomation corresponding
         | 
| 508 | 
            +
                        # to VERSION_FULL when the Oracle client version is below 18.1.
         | 
| 509 | 
            +
                        row['VERSION']
         | 
| 510 | 
            +
                      end
         | 
| 511 | 
            +
                assert_equal(ver, @conn.oracle_server_version.to_s)
         | 
| 512 | 
            +
              end
         | 
| 499 513 | 
             
            end # TestOCI8
         | 
    
        data/test/test_package_type.rb
    CHANGED
    
    | @@ -639,7 +639,11 @@ class TestPackageType < Minitest::Test | |
| 639 639 | 
             
                      :sub_name => "TABLE_OF_PLS_INTEGER",
         | 
| 640 640 | 
             
                      :link => "",
         | 
| 641 641 | 
             
                      #:type_metadata => nil,
         | 
| 642 | 
            -
                      :arguments =>  | 
| 642 | 
            +
                      :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
         | 
| 643 | 
            +
                      {
         | 
| 644 | 
            +
                        :class => Array,
         | 
| 645 | 
            +
                        :size => 0,
         | 
| 646 | 
            +
                      } : {
         | 
| 643 647 | 
             
                        :class => Array,
         | 
| 644 648 | 
             
                        :size => 1,
         | 
| 645 649 | 
             
                        [0] => {
         | 
| @@ -729,7 +733,11 @@ class TestPackageType < Minitest::Test | |
| 729 733 | 
             
                      :sub_name => "TABLE_OF_REC1",
         | 
| 730 734 | 
             
                      :link => "",
         | 
| 731 735 | 
             
                      #:type_metadata => nil,
         | 
| 732 | 
            -
                      :arguments =>  | 
| 736 | 
            +
                      :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
         | 
| 737 | 
            +
                      {
         | 
| 738 | 
            +
                        :class => Array,
         | 
| 739 | 
            +
                        :size => 0,
         | 
| 740 | 
            +
                      } : {
         | 
| 733 741 | 
             
                        :class => Array,
         | 
| 734 742 | 
             
                        :size => 1,
         | 
| 735 743 | 
             
                        [0] => {
         | 
| @@ -846,7 +854,11 @@ class TestPackageType < Minitest::Test | |
| 846 854 | 
             
                      :sub_name => "TABLE_OF_REC1",
         | 
| 847 855 | 
             
                      :link => "",
         | 
| 848 856 | 
             
                      #:type_metadata => nil,
         | 
| 849 | 
            -
                      :arguments =>  | 
| 857 | 
            +
                      :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
         | 
| 858 | 
            +
                      {
         | 
| 859 | 
            +
                        :class => Array,
         | 
| 860 | 
            +
                        :size => 0,
         | 
| 861 | 
            +
                      } : {
         | 
| 850 862 | 
             
                        :class => Array,
         | 
| 851 863 | 
             
                        :size => 1,
         | 
| 852 864 | 
             
                        [0] => {
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            require 'oci8'
         | 
| 2 | 
            +
            require File.dirname(__FILE__) + '/config'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class TestProperties < Minitest::Test
         | 
| 5 | 
            +
              def test_tcp_keepalive_time
         | 
| 6 | 
            +
                begin
         | 
| 7 | 
            +
                  oldval = OCI8.properties[:tcp_keepalive_time]
         | 
| 8 | 
            +
                  begin
         | 
| 9 | 
            +
                    OCI8.properties[:tcp_keepalive_time] = 600
         | 
| 10 | 
            +
                    assert(true)
         | 
| 11 | 
            +
                  ensure
         | 
| 12 | 
            +
                    OCI8.properties[:tcp_keepalive_time] = oldval
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                rescue NotImplementedError
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: ruby-oci8
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 11
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 2
         | 
| 8 8 | 
             
              - 2
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
               | 
| 11 | 
            -
              version: 2.2.5.1
         | 
| 9 | 
            +
              - 6
         | 
| 10 | 
            +
              version: 2.2.6
         | 
| 12 11 | 
             
            platform: x86-mingw32
         | 
| 13 12 | 
             
            authors: 
         | 
| 14 13 | 
             
            - Kubo Takehiro
         | 
| @@ -16,7 +15,7 @@ autorequire: | |
| 16 15 | 
             
            bindir: bin
         | 
| 17 16 | 
             
            cert_chain: []
         | 
| 18 17 |  | 
| 19 | 
            -
            date:  | 
| 18 | 
            +
            date: 2018-08-22 00:00:00 +09:00
         | 
| 20 19 | 
             
            default_executable: 
         | 
| 21 20 | 
             
            dependencies: []
         | 
| 22 21 |  | 
| @@ -105,6 +104,7 @@ files: | |
| 105 104 | 
             
            - test/test_oradate.rb
         | 
| 106 105 | 
             
            - test/test_oranumber.rb
         | 
| 107 106 | 
             
            - test/test_package_type.rb
         | 
| 107 | 
            +
            - test/test_properties.rb
         | 
| 108 108 | 
             
            - test/test_rowid.rb
         | 
| 109 109 | 
             
            - lib/oci8lib_191.so
         | 
| 110 110 | 
             
            - lib/oci8lib_200.so
         |