ruby-oci8 2.2.0.2 → 2.2.1
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 +39 -0
 - data/NEWS +38 -1
 - data/ext/oci8/apiwrap.yml +0 -125
 - data/ext/oci8/bind.c +55 -3
 - data/ext/oci8/extconf.rb +26 -59
 - data/ext/oci8/oci8.h +0 -32
 - data/ext/oci8/oci8lib.c +0 -8
 - data/ext/oci8/ocinumber.c +0 -16
 - data/ext/oci8/oraconf.rb +3 -2
 - data/lib/oci8/bindtype.rb +4 -0
 - data/lib/oci8/oci8.rb +1 -16
 - data/lib/oci8/version.rb +1 -1
 - data/test/test_all.rb +1 -0
 - metadata +3 -4
 
    
        data/ChangeLog
    CHANGED
    
    | 
         @@ -1,3 +1,42 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            2015-11-01  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 2 
     | 
    
         
            +
            	* NEWS: Add changes between 2.2.0.2 and 2.2.1.
         
     | 
| 
      
 3 
     | 
    
         
            +
            	* lib/oci8/version.rb: update to 2.2.1.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            2015-11-01  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 6 
     | 
    
         
            +
            	* ext/oci8/extconf.rb, ext/oci8/oci8.h: Delete unnecessary checks.
         
     | 
| 
      
 7 
     | 
    
         
            +
            	* ext/oci8/oraconf.rb: Reduce time to build an import library on
         
     | 
| 
      
 8 
     | 
    
         
            +
            	    Mingw32 and Cygwin.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            2015-11-01  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 11 
     | 
    
         
            +
            	* lib/oci8/oci8.rb: delete code for Oracle 8i.
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            2015-10-26  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 14 
     | 
    
         
            +
            	* ext/oci8/oci8lib.c: Fix handle leaks when OCI8#ping is used and
         
     | 
| 
      
 15 
     | 
    
         
            +
            	    the Oracle client version is 10gR1.
         
     | 
| 
      
 16 
     | 
    
         
            +
            	    This bug was introduced in ruby-oci8 2.2.0.
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            2015-10-26  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 19 
     | 
    
         
            +
            	* ext/oci8/oci8lib.c: Revive code dropped in ruby-oci8 2.2.0.
         
     | 
| 
      
 20 
     | 
    
         
            +
            	    This prevents potential SEGV on ruby process termination.
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            2015-10-26  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 23 
     | 
    
         
            +
            	* ext/oci8/ocinumber.c: Drop code for ruby 1.8.
         
     | 
| 
      
 24 
     | 
    
         
            +
            	    Rational has been a built-in type since ruby 1.9.
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            2015-10-20  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 27 
     | 
    
         
            +
            	* ext/oci8/bind.c, lib/oci8/bindtype.rb, test/test_all.rb,
         
     | 
| 
      
 28 
     | 
    
         
            +
            	  test/test_bind_boolean.rb: Support boolean type binding.
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            2015-10-19  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 31 
     | 
    
         
            +
            	* ext/oci8/apiwrap.yml: Delete unused OCI function definitions.
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            2015-10-19  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 34 
     | 
    
         
            +
            	* ext/oci8/extconf.rb: Use macros OCI_MAJOR_VERSION and OCI_MINOR_VERSION
         
     | 
| 
      
 35 
     | 
    
         
            +
            	    in oci.h to check the target Oracle client version.
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            2015-10-12  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
      
 38 
     | 
    
         
            +
            	* NEWS: Add changes between 2.2.0.1 and 2.2.0.2.
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
       1 
40 
     | 
    
         
             
            2015-10-12  Kubo Takehiro  <kubo@jiubao.org>
         
     | 
| 
       2 
41 
     | 
    
         
             
            	* lib/oci8/version.rb: Update the version to 2.2.0.2 to
         
     | 
| 
       3 
42 
     | 
    
         
             
            	    release binary gems for mingw32.
         
     | 
    
        data/NEWS
    CHANGED
    
    | 
         @@ -1,10 +1,47 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # @markup markdown
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            2.2.1
         
     | 
| 
      
 4 
     | 
    
         
            +
            =====
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            New Features
         
     | 
| 
      
 7 
     | 
    
         
            +
            ------------
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ### Add OCI8::Metadata::Boolean
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            Support boolean type binding. This feature requires Oracle 12c client and server.
         
     | 
| 
      
 12 
     | 
    
         
            +
            This doens't work when either Oracle server or client is 11g or lower.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            Fixed Issues
         
     | 
| 
      
 15 
     | 
    
         
            +
            ------------
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            The following two issues were introduced in ruby-oci8 2.2.0.
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            ### Fix handle leaks in OCI8#ping
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            This bug affects Oracle 10gR1 client only.
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            ### Fix potential segmentation fault on ruby process termination
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Other Changes
         
     | 
| 
      
 26 
     | 
    
         
            +
            -------------
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            -   Reduce compilation time by dropping unnecessary checks.
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            -   Delete unused code which was added to support old Oracle and ruby 1.8.
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            2.2.0.2
         
     | 
| 
      
 33 
     | 
    
         
            +
            =======
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            Nothing was changed except the version.
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            The forth version was incremented to release binary gems for mingw32.
         
     | 
| 
      
 38 
     | 
    
         
            +
            The binary gems for 2.2.0.1 didn't work by faultily packaging.
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
       3 
40 
     | 
    
         
             
            2.2.0.1
         
     | 
| 
       4 
41 
     | 
    
         
             
            =======
         
     | 
| 
       5 
42 
     | 
    
         | 
| 
       6 
43 
     | 
    
         
             
            If ruby-oci8 2.2.0 is installed, you have no need to update it to
         
     | 
| 
       7 
     | 
    
         
            -
            2.2.0.1. Source code itself was not  
     | 
| 
      
 44 
     | 
    
         
            +
            2.2.0.1. Source code itself was not changed between 2.2.0 and 2.2.0.1.
         
     | 
| 
       8 
45 
     | 
    
         | 
| 
       9 
46 
     | 
    
         
             
            ### Change the required ruby version in the ruby-oci8 gem
         
     | 
| 
       10 
47 
     | 
    
         | 
    
        data/ext/oci8/apiwrap.yml
    CHANGED
    
    | 
         @@ -811,30 +811,6 @@ OCIStmtFetch_nb: 
     | 
|
| 
       811 
811 
     | 
    
         
             
                        - ub2 orientation
         
     | 
| 
       812 
812 
     | 
    
         
             
                        - ub4 mode
         
     | 
| 
       813 
813 
     | 
    
         | 
| 
       814 
     | 
    
         
            -
            OCIStmtGetPieceInfo:
         
     | 
| 
       815 
     | 
    
         
            -
              :version: 800
         
     | 
| 
       816 
     | 
    
         
            -
              :args:
         
     | 
| 
       817 
     | 
    
         
            -
                        - OCIStmt *stmtp
         
     | 
| 
       818 
     | 
    
         
            -
                        - OCIError *errhp
         
     | 
| 
       819 
     | 
    
         
            -
                        - dvoid **hndlpp
         
     | 
| 
       820 
     | 
    
         
            -
                        - ub4 *typep
         
     | 
| 
       821 
     | 
    
         
            -
                        - ub1 *in_outp
         
     | 
| 
       822 
     | 
    
         
            -
                        - ub4 *iterp
         
     | 
| 
       823 
     | 
    
         
            -
                        - ub4 *idxp
         
     | 
| 
       824 
     | 
    
         
            -
                        - ub1 *piecep
         
     | 
| 
       825 
     | 
    
         
            -
             
     | 
| 
       826 
     | 
    
         
            -
            OCIStmtSetPieceInfo:
         
     | 
| 
       827 
     | 
    
         
            -
              :version: 800
         
     | 
| 
       828 
     | 
    
         
            -
              :args:
         
     | 
| 
       829 
     | 
    
         
            -
                        - dvoid *hndlp
         
     | 
| 
       830 
     | 
    
         
            -
                        - ub4 type
         
     | 
| 
       831 
     | 
    
         
            -
                        - OCIError *errhp
         
     | 
| 
       832 
     | 
    
         
            -
                        - CONST dvoid *bufp
         
     | 
| 
       833 
     | 
    
         
            -
                        - ub4 *alenp
         
     | 
| 
       834 
     | 
    
         
            -
                        - ub1 piece
         
     | 
| 
       835 
     | 
    
         
            -
                        - CONST dvoid *indp
         
     | 
| 
       836 
     | 
    
         
            -
                        - ub2 *rcodep
         
     | 
| 
       837 
     | 
    
         
            -
             
     | 
| 
       838 
814 
     | 
    
         
             
            # round trip: 0
         
     | 
| 
       839 
815 
     | 
    
         
             
            OCIStringAssignText:
         
     | 
| 
       840 
816 
     | 
    
         
             
              :version: 800
         
     | 
| 
         @@ -1003,26 +979,6 @@ OCINumberIsInt: 
     | 
|
| 
       1003 
979 
     | 
    
         
             
                        - OCIError *err
         
     | 
| 
       1004 
980 
     | 
    
         
             
                        - CONST OCINumber *number
         
     | 
| 
       1005 
981 
     | 
    
         
             
                        - boolean *result
         
     | 
| 
       1006 
     | 
    
         
            -
              :code_if_not_found: |
         
     | 
| 
       1007 
     | 
    
         
            -
                /* pseude code
         
     | 
| 
       1008 
     | 
    
         
            -
                 *   work = trunc(number);
         
     | 
| 
       1009 
     | 
    
         
            -
                 *   if (number == work) {
         
     | 
| 
       1010 
     | 
    
         
            -
                 *      result = TRUE;
         
     | 
| 
       1011 
     | 
    
         
            -
                 *   } else {
         
     | 
| 
       1012 
     | 
    
         
            -
                 *      result = FALSE;
         
     | 
| 
       1013 
     | 
    
         
            -
                 *   }
         
     | 
| 
       1014 
     | 
    
         
            -
                 */
         
     | 
| 
       1015 
     | 
    
         
            -
                OCINumber work;
         
     | 
| 
       1016 
     | 
    
         
            -
                sword rv;
         
     | 
| 
       1017 
     | 
    
         
            -
                sword cmp;
         
     | 
| 
       1018 
     | 
    
         
            -
                rv = oci8_OCINumberTrunc(err, number, 0, &work, file, line);
         
     | 
| 
       1019 
     | 
    
         
            -
                if (rv != OCI_SUCCESS)
         
     | 
| 
       1020 
     | 
    
         
            -
                    return rv;
         
     | 
| 
       1021 
     | 
    
         
            -
                rv = oci8_OCINumberCmp(err, number, &work, &cmp, file, line);
         
     | 
| 
       1022 
     | 
    
         
            -
                if (rv != OCI_SUCCESS)
         
     | 
| 
       1023 
     | 
    
         
            -
                    return rv;
         
     | 
| 
       1024 
     | 
    
         
            -
                *result = (cmp == 0) ? TRUE : FALSE;
         
     | 
| 
       1025 
     | 
    
         
            -
                return OCI_SUCCESS;
         
     | 
| 
       1026 
982 
     | 
    
         | 
| 
       1027 
983 
     | 
    
         
             
            # round trip: 0
         
     | 
| 
       1028 
984 
     | 
    
         
             
            OCINumberPrec:
         
     | 
| 
         @@ -1040,13 +996,6 @@ OCINumberSetPi: 
     | 
|
| 
       1040 
996 
     | 
    
         
             
              :args:
         
     | 
| 
       1041 
997 
     | 
    
         
             
                        - OCIError *err
         
     | 
| 
       1042 
998 
     | 
    
         
             
                        - OCINumber *num
         
     | 
| 
       1043 
     | 
    
         
            -
              :code_if_not_found: |
         
     | 
| 
       1044 
     | 
    
         
            -
                static const OCINumber pi = {
         
     | 
| 
       1045 
     | 
    
         
            -
                    {0x15, 0xc1, 0x04, 0x0f, 0x10, 0x5d, 0x42, 0x24, 0x5a, 0x50,
         
     | 
| 
       1046 
     | 
    
         
            -
                     0x21, 0x27, 0x2f, 0x1b, 0x2c, 0x27, 0x21, 0x50, 0x33, 0x1d,
         
     | 
| 
       1047 
     | 
    
         
            -
                     0x55, 0x15}
         
     | 
| 
       1048 
     | 
    
         
            -
                };
         
     | 
| 
       1049 
     | 
    
         
            -
                *num = pi;
         
     | 
| 
       1050 
999 
     | 
    
         | 
| 
       1051 
1000 
     | 
    
         
             
            # round trip: 0
         
     | 
| 
       1052 
1001 
     | 
    
         
             
            OCINumberShift:
         
     | 
| 
         @@ -1064,31 +1013,6 @@ OCINumberSign: 
     | 
|
| 
       1064 
1013 
     | 
    
         
             
                        - OCIError *err
         
     | 
| 
       1065 
1014 
     | 
    
         
             
                        - CONST OCINumber *number
         
     | 
| 
       1066 
1015 
     | 
    
         
             
                        - sword *result
         
     | 
| 
       1067 
     | 
    
         
            -
              :code_if_not_found: |
         
     | 
| 
       1068 
     | 
    
         
            -
                /* pseude code
         
     | 
| 
       1069 
     | 
    
         
            -
                 *   number <=> 0
         
     | 
| 
       1070 
     | 
    
         
            -
                 */
         
     | 
| 
       1071 
     | 
    
         
            -
                OCINumber zero;
         
     | 
| 
       1072 
     | 
    
         
            -
                sword rv;
         
     | 
| 
       1073 
     | 
    
         
            -
                sword cmp;
         
     | 
| 
       1074 
     | 
    
         
            -
                OCINumberSetZero(err, &zero);
         
     | 
| 
       1075 
     | 
    
         
            -
                rv = oci8_OCINumberCmp(err, number, &zero, &cmp, file, line);
         
     | 
| 
       1076 
     | 
    
         
            -
                if (rv != OCI_SUCCESS)
         
     | 
| 
       1077 
     | 
    
         
            -
                    return rv;
         
     | 
| 
       1078 
     | 
    
         
            -
                if (cmp > 0)
         
     | 
| 
       1079 
     | 
    
         
            -
                    *result = 1;
         
     | 
| 
       1080 
     | 
    
         
            -
                else if (cmp < 0)
         
     | 
| 
       1081 
     | 
    
         
            -
                    *result = -1;
         
     | 
| 
       1082 
     | 
    
         
            -
                else
         
     | 
| 
       1083 
     | 
    
         
            -
                    *result = 0;
         
     | 
| 
       1084 
     | 
    
         
            -
                return OCI_SUCCESS;
         
     | 
| 
       1085 
     | 
    
         
            -
             
     | 
| 
       1086 
     | 
    
         
            -
            # round trip: 0
         
     | 
| 
       1087 
     | 
    
         
            -
            OCIReset:
         
     | 
| 
       1088 
     | 
    
         
            -
              :version: 810
         
     | 
| 
       1089 
     | 
    
         
            -
              :args:
         
     | 
| 
       1090 
     | 
    
         
            -
                        - dvoid *hndlp
         
     | 
| 
       1091 
     | 
    
         
            -
                        - OCIError *errhp
         
     | 
| 
       1092 
1016 
     | 
    
         | 
| 
       1093 
1017 
     | 
    
         
             
            #
         
     | 
| 
       1094 
1018 
     | 
    
         
             
            # Oracle 9.0
         
     | 
| 
         @@ -1160,16 +1084,6 @@ OCIDateTimeGetTime: 
     | 
|
| 
       1160 
1084 
     | 
    
         
             
                        - ub1 *ss
         
     | 
| 
       1161 
1085 
     | 
    
         
             
                        - ub4 *fsec
         
     | 
| 
       1162 
1086 
     | 
    
         | 
| 
       1163 
     | 
    
         
            -
            # round trip: 0 (not docmented. I guess.)
         
     | 
| 
       1164 
     | 
    
         
            -
            OCIIntervalFromText:
         
     | 
| 
       1165 
     | 
    
         
            -
              :version: 900
         
     | 
| 
       1166 
     | 
    
         
            -
              :args:
         
     | 
| 
       1167 
     | 
    
         
            -
                        - dvoid *hndl
         
     | 
| 
       1168 
     | 
    
         
            -
                        - OCIError *err
         
     | 
| 
       1169 
     | 
    
         
            -
                        - CONST OraText *inpstr
         
     | 
| 
       1170 
     | 
    
         
            -
                        - size_t str_len
         
     | 
| 
       1171 
     | 
    
         
            -
                        - OCIInterval *result
         
     | 
| 
       1172 
     | 
    
         
            -
             
     | 
| 
       1173 
1087 
     | 
    
         
             
            # round trip: 0 (not docmented. I guess.)
         
     | 
| 
       1174 
1088 
     | 
    
         
             
            OCIDateTimeGetTimeZoneOffset:
         
     | 
| 
       1175 
1089 
     | 
    
         
             
              :version: 900
         
     | 
| 
         @@ -1378,25 +1292,6 @@ OCIClientVersion: 
     | 
|
| 
       1378 
1292 
     | 
    
         
             
                        - sword *patch_num
         
     | 
| 
       1379 
1293 
     | 
    
         
             
                        - sword *port_update_num
         
     | 
| 
       1380 
1294 
     | 
    
         | 
| 
       1381 
     | 
    
         
            -
            # round trip: 1
         
     | 
| 
       1382 
     | 
    
         
            -
            OCIDBStartup_nb:
         
     | 
| 
       1383 
     | 
    
         
            -
              :version: 1020
         
     | 
| 
       1384 
     | 
    
         
            -
              :args:
         
     | 
| 
       1385 
     | 
    
         
            -
                        - OCISvcCtx *svchp
         
     | 
| 
       1386 
     | 
    
         
            -
                        - OCIError *errhp
         
     | 
| 
       1387 
     | 
    
         
            -
                        - OCIAdmin *admhp
         
     | 
| 
       1388 
     | 
    
         
            -
                        - ub4 mode
         
     | 
| 
       1389 
     | 
    
         
            -
                        - ub4 flags
         
     | 
| 
       1390 
     | 
    
         
            -
             
     | 
| 
       1391 
     | 
    
         
            -
            # round trip: 1
         
     | 
| 
       1392 
     | 
    
         
            -
            OCIDBShutdown_nb:
         
     | 
| 
       1393 
     | 
    
         
            -
              :version: 1020
         
     | 
| 
       1394 
     | 
    
         
            -
              :args:
         
     | 
| 
       1395 
     | 
    
         
            -
                        - OCISvcCtx *svchp
         
     | 
| 
       1396 
     | 
    
         
            -
                        - OCIError *errhp
         
     | 
| 
       1397 
     | 
    
         
            -
                        - OCIAdmin *admhp
         
     | 
| 
       1398 
     | 
    
         
            -
                        - ub4 mode
         
     | 
| 
       1399 
     | 
    
         
            -
             
     | 
| 
       1400 
1295 
     | 
    
         
             
            # round trip: 1
         
     | 
| 
       1401 
1296 
     | 
    
         
             
            OCIPing_nb:
         
     | 
| 
       1402 
1297 
     | 
    
         
             
              :version: 1020
         
     | 
| 
         @@ -1404,23 +1299,3 @@ OCIPing_nb: 
     | 
|
| 
       1404 
1299 
     | 
    
         
             
                        - OCISvcCtx *svchp
         
     | 
| 
       1405 
1300 
     | 
    
         
             
                        - OCIError *errhp
         
     | 
| 
       1406 
1301 
     | 
    
         
             
                        - ub4 mode
         
     | 
| 
       1407 
     | 
    
         
            -
             
     | 
| 
       1408 
     | 
    
         
            -
            #
         
     | 
| 
       1409 
     | 
    
         
            -
            # Oracle 11.1
         
     | 
| 
       1410 
     | 
    
         
            -
            #
         
     | 
| 
       1411 
     | 
    
         
            -
             
     | 
| 
       1412 
     | 
    
         
            -
            OCIArrayDescriptorAlloc:
         
     | 
| 
       1413 
     | 
    
         
            -
              :version: 1110
         
     | 
| 
       1414 
     | 
    
         
            -
              :args:
         
     | 
| 
       1415 
     | 
    
         
            -
                        - const void *parenth
         
     | 
| 
       1416 
     | 
    
         
            -
                        - void **descpp
         
     | 
| 
       1417 
     | 
    
         
            -
                        - const ub4 type
         
     | 
| 
       1418 
     | 
    
         
            -
                        - ub4 array_size
         
     | 
| 
       1419 
     | 
    
         
            -
                        - const size_t xtramem_sz
         
     | 
| 
       1420 
     | 
    
         
            -
                        - void **usrmempp
         
     | 
| 
       1421 
     | 
    
         
            -
             
     | 
| 
       1422 
     | 
    
         
            -
            OCIArrayDescriptorFree:
         
     | 
| 
       1423 
     | 
    
         
            -
              :version: 1110
         
     | 
| 
       1424 
     | 
    
         
            -
              :args:
         
     | 
| 
       1425 
     | 
    
         
            -
                        - void **descp
         
     | 
| 
       1426 
     | 
    
         
            -
                        - const ub4 type
         
     | 
    
        data/ext/oci8/bind.c
    CHANGED
    
    | 
         @@ -224,9 +224,6 @@ static void bind_binary_double_init(oci8_bind_t *obind, VALUE svc, VALUE val, VA 
     | 
|
| 
       224 
224 
     | 
    
         
             
                obind->alloc_sz = sizeof(double);
         
     | 
| 
       225 
225 
     | 
    
         
             
            }
         
     | 
| 
       226 
226 
     | 
    
         | 
| 
       227 
     | 
    
         
            -
            #ifndef SQLT_BDOUBLE
         
     | 
| 
       228 
     | 
    
         
            -
            #define SQLT_BDOUBLE 22
         
     | 
| 
       229 
     | 
    
         
            -
            #endif
         
     | 
| 
       230 
227 
     | 
    
         
             
            static const oci8_bind_data_type_t bind_binary_double_data_type = {
         
     | 
| 
       231 
228 
     | 
    
         
             
                {
         
     | 
| 
       232 
229 
     | 
    
         
             
                    {
         
     | 
| 
         @@ -257,6 +254,58 @@ static VALUE bind_binary_double_alloc(VALUE klass) 
     | 
|
| 
       257 
254 
     | 
    
         
             
                return oci8_allocate_typeddata(klass, &bind_binary_double_data_type.base);
         
     | 
| 
       258 
255 
     | 
    
         
             
            }
         
     | 
| 
       259 
256 
     | 
    
         | 
| 
      
 257 
     | 
    
         
            +
            /*
         
     | 
| 
      
 258 
     | 
    
         
            +
             * bind_boolean
         
     | 
| 
      
 259 
     | 
    
         
            +
             */
         
     | 
| 
      
 260 
     | 
    
         
            +
            static VALUE bind_boolean_get(oci8_bind_t *obind, void *data, void *null_struct)
         
     | 
| 
      
 261 
     | 
    
         
            +
            {
         
     | 
| 
      
 262 
     | 
    
         
            +
                return *(int*)data ? Qtrue : Qfalse;
         
     | 
| 
      
 263 
     | 
    
         
            +
            }
         
     | 
| 
      
 264 
     | 
    
         
            +
             
     | 
| 
      
 265 
     | 
    
         
            +
            static void bind_boolean_set(oci8_bind_t *obind, void *data, void **null_structp, VALUE val)
         
     | 
| 
      
 266 
     | 
    
         
            +
            {
         
     | 
| 
      
 267 
     | 
    
         
            +
                *(int*)data = RTEST(val) ? -1 : 0;
         
     | 
| 
      
 268 
     | 
    
         
            +
            }
         
     | 
| 
      
 269 
     | 
    
         
            +
             
     | 
| 
      
 270 
     | 
    
         
            +
            static void bind_boolean_init(oci8_bind_t *obind, VALUE svc, VALUE val, VALUE length)
         
     | 
| 
      
 271 
     | 
    
         
            +
            {
         
     | 
| 
      
 272 
     | 
    
         
            +
                obind->value_sz = sizeof(int);
         
     | 
| 
      
 273 
     | 
    
         
            +
                obind->alloc_sz = sizeof(int);
         
     | 
| 
      
 274 
     | 
    
         
            +
            }
         
     | 
| 
      
 275 
     | 
    
         
            +
             
     | 
| 
      
 276 
     | 
    
         
            +
            #ifndef SQLT_BOL
         
     | 
| 
      
 277 
     | 
    
         
            +
            #define SQLT_BOL 252
         
     | 
| 
      
 278 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 279 
     | 
    
         
            +
            static const oci8_bind_data_type_t bind_boolean_data_type = {
         
     | 
| 
      
 280 
     | 
    
         
            +
                {
         
     | 
| 
      
 281 
     | 
    
         
            +
                    {
         
     | 
| 
      
 282 
     | 
    
         
            +
                        "OCI8::BindType::Boolean",
         
     | 
| 
      
 283 
     | 
    
         
            +
                        {
         
     | 
| 
      
 284 
     | 
    
         
            +
                            NULL,
         
     | 
| 
      
 285 
     | 
    
         
            +
                            oci8_handle_cleanup,
         
     | 
| 
      
 286 
     | 
    
         
            +
                            oci8_handle_size,
         
     | 
| 
      
 287 
     | 
    
         
            +
                        },
         
     | 
| 
      
 288 
     | 
    
         
            +
                        &oci8_bind_data_type.rb_data_type, NULL,
         
     | 
| 
      
 289 
     | 
    
         
            +
            #ifdef RUBY_TYPED_WB_PROTECTED
         
     | 
| 
      
 290 
     | 
    
         
            +
                        RUBY_TYPED_WB_PROTECTED,
         
     | 
| 
      
 291 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 292 
     | 
    
         
            +
                    },
         
     | 
| 
      
 293 
     | 
    
         
            +
                    oci8_bind_free,
         
     | 
| 
      
 294 
     | 
    
         
            +
                    sizeof(oci8_bind_t)
         
     | 
| 
      
 295 
     | 
    
         
            +
                },
         
     | 
| 
      
 296 
     | 
    
         
            +
                bind_boolean_get,
         
     | 
| 
      
 297 
     | 
    
         
            +
                bind_boolean_set,
         
     | 
| 
      
 298 
     | 
    
         
            +
                bind_boolean_init,
         
     | 
| 
      
 299 
     | 
    
         
            +
                NULL,
         
     | 
| 
      
 300 
     | 
    
         
            +
                NULL,
         
     | 
| 
      
 301 
     | 
    
         
            +
                SQLT_BOL,
         
     | 
| 
      
 302 
     | 
    
         
            +
            };
         
     | 
| 
      
 303 
     | 
    
         
            +
             
     | 
| 
      
 304 
     | 
    
         
            +
            static VALUE bind_boolean_alloc(VALUE klass)
         
     | 
| 
      
 305 
     | 
    
         
            +
            {
         
     | 
| 
      
 306 
     | 
    
         
            +
                return oci8_allocate_typeddata(klass, &bind_boolean_data_type.base);
         
     | 
| 
      
 307 
     | 
    
         
            +
            }
         
     | 
| 
      
 308 
     | 
    
         
            +
             
     | 
| 
       260 
309 
     | 
    
         
             
            static VALUE oci8_bind_get(VALUE self)
         
     | 
| 
       261 
310 
     | 
    
         
             
            {
         
     | 
| 
       262 
311 
     | 
    
         
             
                oci8_bind_t *obind = TO_BIND(self);
         
     | 
| 
         @@ -422,4 +471,7 @@ void Init_oci8_bind(VALUE klass) 
     | 
|
| 
       422 
471 
     | 
    
         
             
                oci8_define_bind_class("String", &bind_string_data_type, bind_string_alloc);
         
     | 
| 
       423 
472 
     | 
    
         
             
                oci8_define_bind_class("RAW", &bind_raw_data_type, bind_raw_alloc);
         
     | 
| 
       424 
473 
     | 
    
         
             
                oci8_define_bind_class("BinaryDouble", &bind_binary_double_data_type, bind_binary_double_alloc);
         
     | 
| 
      
 474 
     | 
    
         
            +
                if (oracle_client_version >= ORAVER_12_1) {
         
     | 
| 
      
 475 
     | 
    
         
            +
                    oci8_define_bind_class("Boolean", &bind_boolean_data_type, bind_boolean_alloc);
         
     | 
| 
      
 476 
     | 
    
         
            +
                }
         
     | 
| 
       425 
477 
     | 
    
         
             
            }
         
     | 
    
        data/ext/oci8/extconf.rb
    CHANGED
    
    | 
         @@ -25,77 +25,44 @@ $CFLAGS += oraconf.cflags 
     | 
|
| 
       25 
25 
     | 
    
         
             
            saved_libs = $libs
         
     | 
| 
       26 
26 
     | 
    
         
             
            $libs += oraconf.libs
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
            oci_actual_client_version = 0x08000000
         
     | 
| 
       29 
     | 
    
         
            -
            funcs = {}
         
     | 
| 
       30 
     | 
    
         
            -
            YAML.load(open(File.dirname(__FILE__) + '/apiwrap.yml')).each do |key, val|
         
     | 
| 
       31 
     | 
    
         
            -
              key = key[0..-4] if key[-3..-1] == '_nb'
         
     | 
| 
       32 
     | 
    
         
            -
              ver = val[:version]
         
     | 
| 
       33 
     | 
    
         
            -
              ver_major = (ver / 100)
         
     | 
| 
       34 
     | 
    
         
            -
              ver_minor = (ver / 10) % 10
         
     | 
| 
       35 
     | 
    
         
            -
              ver_update = ver % 10
         
     | 
| 
       36 
     | 
    
         
            -
              ver = ((ver_major << 24) | (ver_minor << 20) | (ver_update << 12))
         
     | 
| 
       37 
     | 
    
         
            -
              funcs[ver] ||= []
         
     | 
| 
       38 
     | 
    
         
            -
              funcs[ver] << key
         
     | 
| 
       39 
     | 
    
         
            -
            end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
28 
     | 
    
         
             
            saved_defs = $defs.clone
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
               
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                 
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
            fmt = "%s"
         
     | 
| 
      
 30 
     | 
    
         
            +
            def fmt.%(x)
         
     | 
| 
      
 31 
     | 
    
         
            +
              x ? super : "failed"
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
      
 33 
     | 
    
         
            +
            oci_major_version = checking_for 'OCI_MAJOR_VERSION in oci.h', fmt do
         
     | 
| 
      
 34 
     | 
    
         
            +
              try_constant('OCI_MAJOR_VERSION', 'oci.h')
         
     | 
| 
      
 35 
     | 
    
         
            +
            end
         
     | 
| 
      
 36 
     | 
    
         
            +
            if oci_major_version
         
     | 
| 
      
 37 
     | 
    
         
            +
              oci_minor_version = checking_for 'OCI_MINOR_VERSION in oci.h', fmt do
         
     | 
| 
      
 38 
     | 
    
         
            +
                try_constant('OCI_MINOR_VERSION', 'oci.h')
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
            else
         
     | 
| 
      
 41 
     | 
    
         
            +
              if have_func('OCILobGetLength2')
         
     | 
| 
      
 42 
     | 
    
         
            +
                oci_major_version = 10
         
     | 
| 
      
 43 
     | 
    
         
            +
                oci_minor_version = 1
         
     | 
| 
      
 44 
     | 
    
         
            +
              elsif have_func('OCIStmtPrepare2')
         
     | 
| 
      
 45 
     | 
    
         
            +
                raise "Ruby-oci8 #{OCI8::VERSION} doesn't support Oracle 9iR2. Use ruby-oci8 2.1.x instead."
         
     | 
| 
      
 46 
     | 
    
         
            +
              elsif have_func('OCILogon2')
         
     | 
| 
      
 47 
     | 
    
         
            +
                raise "Ruby-oci8 #{OCI8::VERSION} doesn't support Oracle 9iR1. Use ruby-oci8 2.1.x instead."
         
     | 
| 
      
 48 
     | 
    
         
            +
              elsif have_func('OCIEnvCreate')
         
     | 
| 
      
 49 
     | 
    
         
            +
                raise "Ruby-oci8 #{OCI8::VERSION} doesn't support Oracle 8i. Use ruby-oci8 2.0.x instead."
         
     | 
| 
      
 50 
     | 
    
         
            +
              else
         
     | 
| 
      
 51 
     | 
    
         
            +
                raise "Ruby-oci8 #{OCI8::VERSION} doesn't support Oracle 8. Use ruby-oci8 2.0.x instead."
         
     | 
| 
       54 
52 
     | 
    
         
             
              end
         
     | 
| 
       55 
     | 
    
         
            -
              puts "checking for Oracle #{verstr} API - #{result}"
         
     | 
| 
       56 
     | 
    
         
            -
              break if result == 'fail'
         
     | 
| 
       57 
53 
     | 
    
         
             
            end
         
     | 
| 
       58 
54 
     | 
    
         
             
            $defs = saved_defs
         
     | 
| 
       59 
55 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
            have_type('oratext', 'ociap.h')
         
     | 
| 
       61 
     | 
    
         
            -
            have_type('OCIDateTime*', 'ociap.h')
         
     | 
| 
       62 
     | 
    
         
            -
            have_type('OCIInterval*', 'ociap.h')
         
     | 
| 
       63 
     | 
    
         
            -
            have_type('OCICallbackLobRead2', 'ociap.h')
         
     | 
| 
       64 
     | 
    
         
            -
            have_type('OCICallbackLobWrite2', 'ociap.h')
         
     | 
| 
       65 
     | 
    
         
            -
            have_type('OCIAdmin*', 'ociap.h')
         
     | 
| 
       66 
     | 
    
         
            -
            have_type('OCIAuthInfo*', 'ociap.h')
         
     | 
| 
       67 
     | 
    
         
            -
            have_type('OCIMsg*', 'ociap.h')
         
     | 
| 
       68 
     | 
    
         
            -
            have_type('OCICPool*', 'ociap.h')
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
56 
     | 
    
         
             
            if with_config('oracle-version')
         
     | 
| 
       71 
     | 
    
         
            -
               
     | 
| 
      
 57 
     | 
    
         
            +
              oraver = OCI8::OracleVersion.new(with_config('oracle-version'))
         
     | 
| 
       72 
58 
     | 
    
         
             
            else
         
     | 
| 
       73 
     | 
    
         
            -
               
     | 
| 
      
 59 
     | 
    
         
            +
              oraver = OCI8::OracleVersion.new(oci_major_version, oci_minor_version)
         
     | 
| 
       74 
60 
     | 
    
         
             
            end
         
     | 
| 
       75 
     | 
    
         
            -
            $defs << "-DORACLE_CLIENT_VERSION=#{format('0x%08x',  
     | 
| 
      
 61 
     | 
    
         
            +
            $defs << "-DORACLE_CLIENT_VERSION=#{format('0x%08x', oraver.to_i)}"
         
     | 
| 
       76 
62 
     | 
    
         | 
| 
       77 
63 
     | 
    
         
             
            if with_config('runtime-check')
         
     | 
| 
       78 
64 
     | 
    
         
             
              $defs << "-DRUNTIME_API_CHECK=1"
         
     | 
| 
       79 
65 
     | 
    
         
             
              $libs = saved_libs
         
     | 
| 
       80 
     | 
    
         
            -
            else
         
     | 
| 
       81 
     | 
    
         
            -
              oraver = OCI8::OracleVersion.new(oci_client_version)
         
     | 
| 
       82 
     | 
    
         
            -
              if oraver < OCI8::OracleVersion.new(10)
         
     | 
| 
       83 
     | 
    
         
            -
                case "#{oraver.major}.#{oraver.minor}"
         
     | 
| 
       84 
     | 
    
         
            -
                when "8.0"
         
     | 
| 
       85 
     | 
    
         
            -
                  ora_name = "Oracle 8"
         
     | 
| 
       86 
     | 
    
         
            -
                  oci8_ver = "2.0.x"
         
     | 
| 
       87 
     | 
    
         
            -
                when "8.1"
         
     | 
| 
       88 
     | 
    
         
            -
                  ora_name = "Oracle 8i"
         
     | 
| 
       89 
     | 
    
         
            -
                  oci8_ver = "2.0.x"
         
     | 
| 
       90 
     | 
    
         
            -
                when "9.1"
         
     | 
| 
       91 
     | 
    
         
            -
                  ora_name = "Oracle 9iR1"
         
     | 
| 
       92 
     | 
    
         
            -
                  oci8_ver = "2.1.x"
         
     | 
| 
       93 
     | 
    
         
            -
                when "9.2"
         
     | 
| 
       94 
     | 
    
         
            -
                  ora_name = "Oracle 9iR2"
         
     | 
| 
       95 
     | 
    
         
            -
                  oci8_ver = "2.1.x"
         
     | 
| 
       96 
     | 
    
         
            -
                end
         
     | 
| 
       97 
     | 
    
         
            -
                raise "Ruby-oci8 #{OCI8::VERSION} doesn't support #{ora_name}. Use ruby-oci8 #{oci8_ver} instead."
         
     | 
| 
       98 
     | 
    
         
            -
              end
         
     | 
| 
       99 
66 
     | 
    
         
             
            end
         
     | 
| 
       100 
67 
     | 
    
         | 
| 
       101 
68 
     | 
    
         
             
            $objs = ["oci8lib.o", "env.o", "error.o", "oci8.o", "ocihandle.o",
         
     | 
    
        data/ext/oci8/oci8.h
    CHANGED
    
    | 
         @@ -58,38 +58,6 @@ typedef oraub8 ub8; 
     | 
|
| 
       58 
58 
     | 
    
         
             
            typedef orasb8 sb8;
         
     | 
| 
       59 
59 
     | 
    
         
             
            #endif /* ORAXB8_DEFINED */
         
     | 
| 
       60 
60 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
            #ifndef HAVE_TYPE_ORATEXT
         
     | 
| 
       62 
     | 
    
         
            -
            typedef unsigned char oratext;
         
     | 
| 
       63 
     | 
    
         
            -
            #endif
         
     | 
| 
       64 
     | 
    
         
            -
            #if !defined HAVE_TYPE_OCIDATETIME_ && !defined HAVE_TYPE_OCIDATETIMEP
         
     | 
| 
       65 
     | 
    
         
            -
            typedef struct OCIDateTime OCIDateTime;
         
     | 
| 
       66 
     | 
    
         
            -
            #endif
         
     | 
| 
       67 
     | 
    
         
            -
            #if !defined HAVE_TYPE_OCIINTERVAL_ && !defined HAVE_TYPE_OCIINTERVALP
         
     | 
| 
       68 
     | 
    
         
            -
            typedef struct OCIInterval OCIInterval;
         
     | 
| 
       69 
     | 
    
         
            -
            #endif
         
     | 
| 
       70 
     | 
    
         
            -
            #ifndef HAVE_TYPE_OCICALLBACKLOBREAD2
         
     | 
| 
       71 
     | 
    
         
            -
            typedef sb4 (*OCICallbackLobRead2)(dvoid *ctxp, CONST dvoid *bufp, oraub8 len,
         
     | 
| 
       72 
     | 
    
         
            -
                                               ub1 piece, dvoid **changed_bufpp,
         
     | 
| 
       73 
     | 
    
         
            -
                                               oraub8 *changed_lenp);
         
     | 
| 
       74 
     | 
    
         
            -
            #endif
         
     | 
| 
       75 
     | 
    
         
            -
            #ifndef HAVE_TYPE_OCICALLBACKLOBWRITE2
         
     | 
| 
       76 
     | 
    
         
            -
            typedef sb4 (*OCICallbackLobWrite2)(dvoid *ctxp, dvoid *bufp, oraub8 *lenp,
         
     | 
| 
       77 
     | 
    
         
            -
                                                ub1 *piece, dvoid **changed_bufpp,
         
     | 
| 
       78 
     | 
    
         
            -
                                                oraub8 *changed_lenp);
         
     | 
| 
       79 
     | 
    
         
            -
            #endif
         
     | 
| 
       80 
     | 
    
         
            -
            #if !defined HAVE_TYPE_OCIADMIN_ && !defined HAVE_TYPE_OCIADMINP
         
     | 
| 
       81 
     | 
    
         
            -
            typedef struct OCIAdmin OCIAdmin;
         
     | 
| 
       82 
     | 
    
         
            -
            #endif
         
     | 
| 
       83 
     | 
    
         
            -
            #if !defined HAVE_TYPE_OCIAUTHINFO_ && !defined HAVE_TYPE_OCIAUTHINFOP
         
     | 
| 
       84 
     | 
    
         
            -
            typedef struct OCIAuthInfo OCIAuthInfo;
         
     | 
| 
       85 
     | 
    
         
            -
            #endif
         
     | 
| 
       86 
     | 
    
         
            -
            #if !defined HAVE_TYPE_OCIMSG_ && !defined HAVE_TYPE_OCIMSGP
         
     | 
| 
       87 
     | 
    
         
            -
            typedef struct OCIMsg  OCIMsg;
         
     | 
| 
       88 
     | 
    
         
            -
            #endif
         
     | 
| 
       89 
     | 
    
         
            -
            #if !defined HAVE_TYPE_OCICPOOL_ && !defined HAVE_TYPE_OCICPOOLP
         
     | 
| 
       90 
     | 
    
         
            -
            typedef struct OCICPool OCICPool;
         
     | 
| 
       91 
     | 
    
         
            -
            #endif
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
61 
     | 
    
         
             
            #if defined RBX_CAPI_RUBY_H
         
     | 
| 
       94 
62 
     | 
    
         
             
            /* rubinius 2.0 */
         
     | 
| 
       95 
63 
     | 
    
         
             
            #ifndef HAVE_RB_ENC_STR_BUF_CAT
         
     | 
    
        data/ext/oci8/oci8lib.c
    CHANGED
    
    | 
         @@ -54,7 +54,6 @@ void oci8_base_free(oci8_base_t *base) 
     | 
|
| 
       54 
54 
     | 
    
         
             
                base->hp.ptr = NULL;
         
     | 
| 
       55 
55 
     | 
    
         
             
            }
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
            #ifdef HAVE_RB_SET_END_PROC
         
     | 
| 
       58 
57 
     | 
    
         
             
            static void at_exit_func(VALUE val)
         
     | 
| 
       59 
58 
     | 
    
         
             
            {
         
     | 
| 
       60 
59 
     | 
    
         
             
                oci8_in_finalizer = 1;
         
     | 
| 
         @@ -62,7 +61,6 @@ static void at_exit_func(VALUE val) 
     | 
|
| 
       62 
61 
     | 
    
         
             
                oci8_shutdown_sockets();
         
     | 
| 
       63 
62 
     | 
    
         
             
            #endif
         
     | 
| 
       64 
63 
     | 
    
         
             
            }
         
     | 
| 
       65 
     | 
    
         
            -
            #endif
         
     | 
| 
       66 
64 
     | 
    
         | 
| 
       67 
65 
     | 
    
         
             
            static VALUE bind_base_alloc(VALUE klass)
         
     | 
| 
       68 
66 
     | 
    
         
             
            {
         
     | 
| 
         @@ -118,9 +116,7 @@ Init_oci8lib() 
     | 
|
| 
       118 
116 
     | 
    
         
             
                oci8_id_mul_op = rb_intern("*");
         
     | 
| 
       119 
117 
     | 
    
         
             
                oci8_id_div_op = rb_intern("/");
         
     | 
| 
       120 
118 
     | 
    
         
             
            #endif
         
     | 
| 
       121 
     | 
    
         
            -
            #ifdef HAVE_RB_SET_END_PROC
         
     | 
| 
       122 
119 
     | 
    
         
             
                rb_set_end_proc(at_exit_func, Qnil);
         
     | 
| 
       123 
     | 
    
         
            -
            #endif
         
     | 
| 
       124 
120 
     | 
    
         | 
| 
       125 
121 
     | 
    
         
             
                Init_oci8_thread_util();
         
     | 
| 
       126 
122 
     | 
    
         
             
                Init_oci8_error();
         
     | 
| 
         @@ -385,10 +381,6 @@ static VALUE exec_sql(cb_arg_t *arg) 
     | 
|
| 
       385 
381 
     | 
    
         
             
                ub4 pos;
         
     | 
| 
       386 
382 
     | 
    
         
             
                sword rv;
         
     | 
| 
       387 
383 
     | 
    
         | 
| 
       388 
     | 
    
         
            -
                rv = OCIHandleAlloc(oci8_envhp, (dvoid*)&arg->stmtp, OCI_HTYPE_STMT, 0, NULL);
         
     | 
| 
       389 
     | 
    
         
            -
                if (rv != OCI_SUCCESS) {
         
     | 
| 
       390 
     | 
    
         
            -
                    oci8_env_raise(oci8_envhp, rv);
         
     | 
| 
       391 
     | 
    
         
            -
                }
         
     | 
| 
       392 
384 
     | 
    
         
             
                chker2(OCIStmtPrepare2(arg->svcctx->base.hp.svc, &arg->stmtp, oci8_errhp, 
         
     | 
| 
       393 
385 
     | 
    
         
             
                                       (text*)arg->sql_text, strlen(arg->sql_text), NULL, 0,
         
     | 
| 
       394 
386 
     | 
    
         
             
                                       OCI_NTV_SYNTAX, OCI_DEFAULT),
         
     | 
    
        data/ext/oci8/ocinumber.c
    CHANGED
    
    | 
         @@ -23,10 +23,8 @@ static ID id_finite_p; 
     | 
|
| 
       23 
23 
     | 
    
         
             
            static ID id_split;
         
     | 
| 
       24 
24 
     | 
    
         
             
            static ID id_numerator;
         
     | 
| 
       25 
25 
     | 
    
         
             
            static ID id_denominator;
         
     | 
| 
       26 
     | 
    
         
            -
            static ID id_Rational;
         
     | 
| 
       27 
26 
     | 
    
         
             
            static ID id_BigDecimal;
         
     | 
| 
       28 
27 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
            static VALUE cRational;
         
     | 
| 
       30 
28 
     | 
    
         
             
            static VALUE cBigDecimal;
         
     | 
| 
       31 
29 
     | 
    
         | 
| 
       32 
30 
     | 
    
         
             
            static VALUE cOCINumber;
         
     | 
| 
         @@ -51,19 +49,6 @@ static int rboci8_type(VALUE obj) 
     | 
|
| 
       51 
49 
     | 
    
         
             
                VALUE klass;
         
     | 
| 
       52 
50 
     | 
    
         | 
| 
       53 
51 
     | 
    
         
             
                switch (type) {
         
     | 
| 
       54 
     | 
    
         
            -
                case T_OBJECT:
         
     | 
| 
       55 
     | 
    
         
            -
                    klass = CLASS_OF(obj);
         
     | 
| 
       56 
     | 
    
         
            -
                    if (cRational != 0) {
         
     | 
| 
       57 
     | 
    
         
            -
                        if (klass == cRational) {
         
     | 
| 
       58 
     | 
    
         
            -
                            return T_RATIONAL;
         
     | 
| 
       59 
     | 
    
         
            -
                        }
         
     | 
| 
       60 
     | 
    
         
            -
                    } else {
         
     | 
| 
       61 
     | 
    
         
            -
                        if (strcmp(rb_class2name(klass), "Rational") == 0) {
         
     | 
| 
       62 
     | 
    
         
            -
                            cRational = rb_const_get(rb_cObject, id_Rational);
         
     | 
| 
       63 
     | 
    
         
            -
                            return T_RATIONAL;
         
     | 
| 
       64 
     | 
    
         
            -
                        }
         
     | 
| 
       65 
     | 
    
         
            -
                    }
         
     | 
| 
       66 
     | 
    
         
            -
                    break;
         
     | 
| 
       67 
52 
     | 
    
         
             
                case T_DATA:
         
     | 
| 
       68 
53 
     | 
    
         
             
                    klass = CLASS_OF(obj);
         
     | 
| 
       69 
54 
     | 
    
         
             
                    if (klass == cOCINumber) {
         
     | 
| 
         @@ -1805,7 +1790,6 @@ Init_oci_number(VALUE cOCI8, OCIError *errhp) 
     | 
|
| 
       1805 
1790 
     | 
    
         
             
                id_split = rb_intern("split");
         
     | 
| 
       1806 
1791 
     | 
    
         
             
                id_numerator = rb_intern("numerator");
         
     | 
| 
       1807 
1792 
     | 
    
         
             
                id_denominator = rb_intern("denominator");
         
     | 
| 
       1808 
     | 
    
         
            -
                id_Rational = rb_intern("Rational");
         
     | 
| 
       1809 
1793 
     | 
    
         
             
                id_BigDecimal = rb_intern("BigDecimal");
         
     | 
| 
       1810 
1794 
     | 
    
         | 
| 
       1811 
1795 
     | 
    
         
             
                cOCINumber = rb_define_class("OraNumber", rb_cNumeric);
         
     | 
    
        data/ext/oci8/oraconf.rb
    CHANGED
    
    | 
         @@ -696,7 +696,7 @@ EOS 
     | 
|
| 
       696 
696 
     | 
    
         
             
                original_libs = $libs
         
     | 
| 
       697 
697 
     | 
    
         
             
                begin
         
     | 
| 
       698 
698 
     | 
    
         
             
                  $libs += " -L#{CONFIG['libdir']} " + @libs
         
     | 
| 
       699 
     | 
    
         
            -
                  have_func(" 
     | 
| 
      
 699 
     | 
    
         
            +
                  have_func("OCIEnvCreate", "oci.h")
         
     | 
| 
       700 
700 
     | 
    
         
             
                ensure
         
     | 
| 
       701 
701 
     | 
    
         
             
                  $libs = original_libs
         
     | 
| 
       702 
702 
     | 
    
         
             
                end
         
     | 
| 
         @@ -708,11 +708,12 @@ EOS 
     | 
|
| 
       708 
708 
     | 
    
         
             
                  case RUBY_PLATFORM
         
     | 
| 
       709 
709 
     | 
    
         
             
                  when /cygwin|x64-mingw32/
         
     | 
| 
       710 
710 
     | 
    
         
             
                    regex = ([nil].pack('P').size == 8) ? / T (OCI\w+)/ : / T _(OCI\w+)/
         
     | 
| 
      
 711 
     | 
    
         
            +
                    oci_funcs = YAML.load(open(File.dirname(__FILE__) + '/apiwrap.yml'))
         
     | 
| 
       711 
712 
     | 
    
         
             
                    open("OCI.def", "w") do |f|
         
     | 
| 
       712 
713 
     | 
    
         
             
                      f.puts("EXPORTS")
         
     | 
| 
       713 
714 
     | 
    
         
             
                      open("|nm #{lib_dir}/MSVC/OCI.LIB") do |r|
         
     | 
| 
       714 
715 
     | 
    
         
             
                        while line = r.gets
         
     | 
| 
       715 
     | 
    
         
            -
                          f.puts($1) if regex =~ line
         
     | 
| 
      
 716 
     | 
    
         
            +
                          f.puts($1) if regex =~ line and oci_funcs.include?($1)
         
     | 
| 
       716 
717 
     | 
    
         
             
                        end
         
     | 
| 
       717 
718 
     | 
    
         
             
                      end
         
     | 
| 
       718 
719 
     | 
    
         
             
                    end
         
     | 
    
        data/lib/oci8/bindtype.rb
    CHANGED
    
    | 
         @@ -216,6 +216,10 @@ OCI8::BindType::Mapping[OCI8::NCLOB]  = OCI8::BindType::NCLOB 
     | 
|
| 
       216 
216 
     | 
    
         
             
            OCI8::BindType::Mapping[OCI8::BLOB]   = OCI8::BindType::BLOB
         
     | 
| 
       217 
217 
     | 
    
         
             
            OCI8::BindType::Mapping[OCI8::BFILE]  = OCI8::BindType::BFILE
         
     | 
| 
       218 
218 
     | 
    
         
             
            OCI8::BindType::Mapping[OCI8::Cursor] = OCI8::BindType::Cursor
         
     | 
| 
      
 219 
     | 
    
         
            +
            if defined? OCI8::BindType::Boolean
         
     | 
| 
      
 220 
     | 
    
         
            +
              OCI8::BindType::Mapping[TrueClass] = OCI8::BindType::Boolean
         
     | 
| 
      
 221 
     | 
    
         
            +
              OCI8::BindType::Mapping[FalseClass] = OCI8::BindType::Boolean
         
     | 
| 
      
 222 
     | 
    
         
            +
            end
         
     | 
| 
       219 
223 
     | 
    
         | 
| 
       220 
224 
     | 
    
         
             
            # implicitly define
         
     | 
| 
       221 
225 
     | 
    
         | 
    
        data/lib/oci8/oci8.rb
    CHANGED
    
    | 
         @@ -351,22 +351,7 @@ class OCI8 
     | 
|
| 
       351 
351 
     | 
    
         
             
              # @see OCI8.oracle_client_version
         
     | 
| 
       352 
352 
     | 
    
         
             
              # @return [OCI8::OracleVersion]
         
     | 
| 
       353 
353 
     | 
    
         
             
              def oracle_server_version
         
     | 
| 
       354 
     | 
    
         
            -
                 
     | 
| 
       355 
     | 
    
         
            -
                  if vernum = oracle_server_vernum
         
     | 
| 
       356 
     | 
    
         
            -
                    # If the Oracle client is Oracle 9i or upper,
         
     | 
| 
       357 
     | 
    
         
            -
                    # get the server version from the OCI function OCIServerRelease.
         
     | 
| 
       358 
     | 
    
         
            -
                    @oracle_server_version = OCI8::OracleVersion.new(vernum)
         
     | 
| 
       359 
     | 
    
         
            -
                  else
         
     | 
| 
       360 
     | 
    
         
            -
                    # Otherwise, get it from v$version.
         
     | 
| 
       361 
     | 
    
         
            -
                    self.exec('select banner from v$version') do |row|
         
     | 
| 
       362 
     | 
    
         
            -
                      if /^Oracle.*?(\d+\.\d+\.\d+\.\d+\.\d+)/ =~ row[0]
         
     | 
| 
       363 
     | 
    
         
            -
                        @oracle_server_version = OCI8::OracleVersion.new($1)
         
     | 
| 
       364 
     | 
    
         
            -
                        break
         
     | 
| 
       365 
     | 
    
         
            -
                      end
         
     | 
| 
       366 
     | 
    
         
            -
                    end
         
     | 
| 
       367 
     | 
    
         
            -
                  end
         
     | 
| 
       368 
     | 
    
         
            -
                end
         
     | 
| 
       369 
     | 
    
         
            -
                @oracle_server_version
         
     | 
| 
      
 354 
     | 
    
         
            +
                @oracle_server_version ||= OCI8::OracleVersion.new(oracle_server_vernum)
         
     | 
| 
       370 
355 
     | 
    
         
             
              end
         
     | 
| 
       371 
356 
     | 
    
         | 
| 
       372 
357 
     | 
    
         
             
              # Returns the Oracle database character set name such as AL32UTF8.
         
     | 
    
        data/lib/oci8/version.rb
    CHANGED
    
    
    
        data/test/test_all.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -5,9 +5,8 @@ version: !ruby/object:Gem::Version 
     | 
|
| 
       5 
5 
     | 
    
         
             
              segments: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              - 2
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 2
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
               
     | 
| 
       10 
     | 
    
         
            -
              version: 2.2.0.2
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 2.2.1
         
     | 
| 
       11 
10 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
11 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
12 
     | 
    
         
             
            - Kubo Takehiro
         
     | 
| 
         @@ -15,7 +14,7 @@ autorequire: 
     | 
|
| 
       15 
14 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
15 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
16 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2015-11-01 00:00:00 +09:00
         
     | 
| 
       19 
18 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       20 
19 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       21 
20 
     | 
    
         |