ruby-oci8 1.0.7-x86-mswin32-60 → 2.0.1-x86-mswin32-60
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 +1289 -383
 - data/Makefile +48 -12
 - data/NEWS +5 -419
 - data/README +56 -385
 - data/VERSION +1 -1
 - data/dist-files +27 -27
 - data/lib/.document +2 -0
 - data/lib/dbd/OCI8.rb +2 -17
 - data/lib/oci8.rb +48 -1622
 - data/lib/oci8.rb.in +48 -1622
 - data/lib/oci8/.document +5 -0
 - data/lib/oci8/compat.rb +108 -0
 - data/lib/oci8/datetime.rb +491 -0
 - data/lib/oci8/encoding-init.rb +40 -0
 - data/lib/oci8/encoding.yml +537 -0
 - data/lib/oci8/metadata.rb +2077 -0
 - data/lib/oci8/object.rb +548 -0
 - data/lib/oci8/oci8.rb +798 -0
 - data/lib/oci8/oracle_version.rb +144 -0
 - data/lib/oci8lib_18.so +0 -0
 - data/lib/oci8lib_191.so +0 -0
 - data/metaconfig +3 -3
 - data/ruby-oci8.gemspec +24 -15
 - data/setup.rb +4 -4
 - data/test/config.rb +64 -84
 - data/test/test_all.rb +14 -21
 - data/test/test_array_dml.rb +333 -0
 - data/test/test_bind_raw.rb +18 -25
 - data/test/test_bind_time.rb +78 -91
 - data/test/test_break.rb +37 -35
 - data/test/test_clob.rb +33 -89
 - data/test/test_connstr.rb +5 -4
 - data/test/test_datetime.rb +469 -0
 - data/test/test_dbi.rb +99 -60
 - data/test/test_dbi_clob.rb +3 -8
 - data/test/test_metadata.rb +65 -51
 - data/test/test_oci8.rb +151 -55
 - data/test/test_oracle_version.rb +70 -0
 - data/test/test_oradate.rb +76 -83
 - data/test/test_oranumber.rb +405 -71
 - data/test/test_rowid.rb +6 -11
 - metadata +21 -25
 - data/ext/oci8/oci8lib.so +0 -0
 - data/ruby-oci8.spec +0 -62
 - data/support/README +0 -4
 - data/support/runit/assert.rb +0 -281
 - data/support/runit/cui/testrunner.rb +0 -101
 - data/support/runit/error.rb +0 -4
 - data/support/runit/method_mappable.rb +0 -20
 - data/support/runit/robserver.rb +0 -25
 - data/support/runit/setuppable.rb +0 -15
 - data/support/runit/teardownable.rb +0 -16
 - data/support/runit/testcase.rb +0 -113
 - data/support/runit/testfailure.rb +0 -25
 - data/support/runit/testresult.rb +0 -121
 - data/support/runit/testsuite.rb +0 -43
 - data/support/runit/version.rb +0 -3
 - data/test/test_describe.rb +0 -137
 
| 
         @@ -0,0 +1,144 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # oracle_version.rb implements OCI8::OracleVersion.
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright (C) 2009 KUBO Takehiro <kubo@jiubao.org>
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            #--
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            class OCI8
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              # A data class, representing Oracle version.
         
     | 
| 
      
 10 
     | 
    
         
            +
              #
         
     | 
| 
      
 11 
     | 
    
         
            +
              # Oracle version is represented by five numbers:
         
     | 
| 
      
 12 
     | 
    
         
            +
              # *major*, *minor*, *update*, *patch* and *port_update*.
         
     | 
| 
      
 13 
     | 
    
         
            +
              class OracleVersion
         
     | 
| 
      
 14 
     | 
    
         
            +
                include Comparable
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                # The first part of the Oracle version.
         
     | 
| 
      
 17 
     | 
    
         
            +
                attr_reader :major
         
     | 
| 
      
 18 
     | 
    
         
            +
                # The second part of the Oracle version.
         
     | 
| 
      
 19 
     | 
    
         
            +
                attr_reader :minor
         
     | 
| 
      
 20 
     | 
    
         
            +
                # The third part of the Oracle version.
         
     | 
| 
      
 21 
     | 
    
         
            +
                attr_reader :update
         
     | 
| 
      
 22 
     | 
    
         
            +
                # The fifth part of the Oracle version.
         
     | 
| 
      
 23 
     | 
    
         
            +
                attr_reader :patch
         
     | 
| 
      
 24 
     | 
    
         
            +
                # The fourth part of the Oracle version.
         
     | 
| 
      
 25 
     | 
    
         
            +
                attr_reader :port_update
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                # Creates a OCI8::OracleVersion object.
         
     | 
| 
      
 28 
     | 
    
         
            +
                #
         
     | 
| 
      
 29 
     | 
    
         
            +
                # If the first argument _arg_ is a String, it is parsed as dotted
         
     | 
| 
      
 30 
     | 
    
         
            +
                # version string. If it is bigger than 0x08000000, it is parsed as
         
     | 
| 
      
 31 
     | 
    
         
            +
                # a number contains 5-digit Oracle version. Otherwise, it is used
         
     | 
| 
      
 32 
     | 
    
         
            +
                # as a major version and the rest arguments are minor, update,
         
     | 
| 
      
 33 
     | 
    
         
            +
                # patch and port_update. Unspecified version numbers are zeros by
         
     | 
| 
      
 34 
     | 
    
         
            +
                # default.
         
     | 
| 
      
 35 
     | 
    
         
            +
                #
         
     | 
| 
      
 36 
     | 
    
         
            +
                # == Example
         
     | 
| 
      
 37 
     | 
    
         
            +
                #   oraver = OCI8::OracleVersion.new('10.2.0.4')
         
     | 
| 
      
 38 
     | 
    
         
            +
                #   oraver.major       # => 10
         
     | 
| 
      
 39 
     | 
    
         
            +
                #   oraver.minor       # =>  2
         
     | 
| 
      
 40 
     | 
    
         
            +
                #   oraver.update      # =>  0
         
     | 
| 
      
 41 
     | 
    
         
            +
                #   oraver.patch       # =>  4
         
     | 
| 
      
 42 
     | 
    
         
            +
                #   oraver.port_update # =>  0
         
     | 
| 
      
 43 
     | 
    
         
            +
                #
         
     | 
| 
      
 44 
     | 
    
         
            +
                #   oraver = OCI8::OracleVersion.new(0x0a200400)
         
     | 
| 
      
 45 
     | 
    
         
            +
                #   oraver.major       # => 10
         
     | 
| 
      
 46 
     | 
    
         
            +
                #   oraver.minor       # =>  2
         
     | 
| 
      
 47 
     | 
    
         
            +
                #   oraver.update      # =>  0
         
     | 
| 
      
 48 
     | 
    
         
            +
                #   oraver.patch       # =>  4
         
     | 
| 
      
 49 
     | 
    
         
            +
                #   oraver.port_update # =>  0
         
     | 
| 
      
 50 
     | 
    
         
            +
                def initialize(arg, minor = nil, update = nil, patch = nil, port_update = nil)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  if arg.is_a? String
         
     | 
| 
      
 52 
     | 
    
         
            +
                    major, minor, update, patch, port_update = arg.split('.').collect do |v|
         
     | 
| 
      
 53 
     | 
    
         
            +
                      v.to_i
         
     | 
| 
      
 54 
     | 
    
         
            +
                    end
         
     | 
| 
      
 55 
     | 
    
         
            +
                  elsif arg >= 0x08000000
         
     | 
| 
      
 56 
     | 
    
         
            +
                    major  = (arg & 0xFF000000) >> 24
         
     | 
| 
      
 57 
     | 
    
         
            +
                    minor  = (arg & 0x00F00000) >> 20
         
     | 
| 
      
 58 
     | 
    
         
            +
                    update = (arg & 0x000FF000) >> 12
         
     | 
| 
      
 59 
     | 
    
         
            +
                    patch  = (arg & 0x00000F00) >> 8
         
     | 
| 
      
 60 
     | 
    
         
            +
                    port_update = (arg & 0x000000FF)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  else
         
     | 
| 
      
 62 
     | 
    
         
            +
                    major = arg
         
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
                  @major = major
         
     | 
| 
      
 65 
     | 
    
         
            +
                  @minor = minor || 0
         
     | 
| 
      
 66 
     | 
    
         
            +
                  @update = update || 0
         
     | 
| 
      
 67 
     | 
    
         
            +
                  @patch = patch || 0
         
     | 
| 
      
 68 
     | 
    
         
            +
                  @port_update = port_update || 0
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                # :call-seq:
         
     | 
| 
      
 72 
     | 
    
         
            +
                #   oraver <=> other_oraver -> -1, 0, +1
         
     | 
| 
      
 73 
     | 
    
         
            +
                #
         
     | 
| 
      
 74 
     | 
    
         
            +
                # Compares +oraver+ and +other_oraver+.
         
     | 
| 
      
 75 
     | 
    
         
            +
                #
         
     | 
| 
      
 76 
     | 
    
         
            +
                # <=> is the basis for the methods <, <=, ==, >, >=, and between?,
         
     | 
| 
      
 77 
     | 
    
         
            +
                # included from module Comparable.
         
     | 
| 
      
 78 
     | 
    
         
            +
                def <=>(other)
         
     | 
| 
      
 79 
     | 
    
         
            +
                  cmp = @major <=> other.major
         
     | 
| 
      
 80 
     | 
    
         
            +
                  return cmp if cmp != 0
         
     | 
| 
      
 81 
     | 
    
         
            +
                  cmp = @minor <=> other.minor
         
     | 
| 
      
 82 
     | 
    
         
            +
                  return cmp if cmp != 0
         
     | 
| 
      
 83 
     | 
    
         
            +
                  cmp = @update <=> other.update
         
     | 
| 
      
 84 
     | 
    
         
            +
                  return cmp if cmp != 0
         
     | 
| 
      
 85 
     | 
    
         
            +
                  cmp = @patch <=> other.patch
         
     | 
| 
      
 86 
     | 
    
         
            +
                  return cmp if cmp != 0
         
     | 
| 
      
 87 
     | 
    
         
            +
                  @port_update <=> other.port_update
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                # :call-seq:
         
     | 
| 
      
 91 
     | 
    
         
            +
                #   oraver.to_i -> integer
         
     | 
| 
      
 92 
     | 
    
         
            +
                #
         
     | 
| 
      
 93 
     | 
    
         
            +
                # Returns an integer number contains 5-digit Oracle version.
         
     | 
| 
      
 94 
     | 
    
         
            +
                #
         
     | 
| 
      
 95 
     | 
    
         
            +
                # If the hexadecimal notation is 0xAABCCDEE, *major*, *minor*,
         
     | 
| 
      
 96 
     | 
    
         
            +
                # *update*, *patch* and *port_update* are 0xAA, 0xB, 0xCC, 0xD and
         
     | 
| 
      
 97 
     | 
    
         
            +
                # 0xEE respectively.
         
     | 
| 
      
 98 
     | 
    
         
            +
                #
         
     | 
| 
      
 99 
     | 
    
         
            +
                # == Example
         
     | 
| 
      
 100 
     | 
    
         
            +
                #   oraver = OCI8::OracleVersion.new('10.2.0.4')
         
     | 
| 
      
 101 
     | 
    
         
            +
                #   oraver.to_i          # => 169870336
         
     | 
| 
      
 102 
     | 
    
         
            +
                #   '%08x' % oraver.to_i # => "0a200400"
         
     | 
| 
      
 103 
     | 
    
         
            +
                def to_i
         
     | 
| 
      
 104 
     | 
    
         
            +
                  (@major << 24) | (@minor << 20) | (@update << 12) | (@patch << 8) | @port_update
         
     | 
| 
      
 105 
     | 
    
         
            +
                end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                # :call-seq:
         
     | 
| 
      
 108 
     | 
    
         
            +
                #   oraver.to_s -> string
         
     | 
| 
      
 109 
     | 
    
         
            +
                #
         
     | 
| 
      
 110 
     | 
    
         
            +
                # Returns a dotted version string of the Oracle version.
         
     | 
| 
      
 111 
     | 
    
         
            +
                #
         
     | 
| 
      
 112 
     | 
    
         
            +
                # == Example
         
     | 
| 
      
 113 
     | 
    
         
            +
                #   oraver = OCI8::OracleVersion.new('10.2.0.4')
         
     | 
| 
      
 114 
     | 
    
         
            +
                #   oraver.to_s          # => '10.2.0.4.0'
         
     | 
| 
      
 115 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 116 
     | 
    
         
            +
                  format('%d.%d.%d.%d.%d', @major, @minor, @update, @patch, @port_update)
         
     | 
| 
      
 117 
     | 
    
         
            +
                end
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                # :call-seq:
         
     | 
| 
      
 120 
     | 
    
         
            +
                #   oraver.eql? other -> true or false
         
     | 
| 
      
 121 
     | 
    
         
            +
                #
         
     | 
| 
      
 122 
     | 
    
         
            +
                # Returns true if +oraver+ and +other+ are the same type and have
         
     | 
| 
      
 123 
     | 
    
         
            +
                # equal values.
         
     | 
| 
      
 124 
     | 
    
         
            +
                #--
         
     | 
| 
      
 125 
     | 
    
         
            +
                # This is for class Hash to test members for equality.
         
     | 
| 
      
 126 
     | 
    
         
            +
                def eql?(other)
         
     | 
| 
      
 127 
     | 
    
         
            +
                  other.is_a? OCI8::OracleVersion and (self <=> other) == 0
         
     | 
| 
      
 128 
     | 
    
         
            +
                end
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                # :call-seq:
         
     | 
| 
      
 131 
     | 
    
         
            +
                #   oraver.hash -> integer
         
     | 
| 
      
 132 
     | 
    
         
            +
                #
         
     | 
| 
      
 133 
     | 
    
         
            +
                # Returns a hash based on the value of +oraver+.
         
     | 
| 
      
 134 
     | 
    
         
            +
                #--
         
     | 
| 
      
 135 
     | 
    
         
            +
                # This is for class Hash.
         
     | 
| 
      
 136 
     | 
    
         
            +
                def hash
         
     | 
| 
      
 137 
     | 
    
         
            +
                  to_i
         
     | 
| 
      
 138 
     | 
    
         
            +
                end
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
                def inspect # :nodoc:
         
     | 
| 
      
 141 
     | 
    
         
            +
                  "#<#{self.class.to_s}: #{self.to_s}>"
         
     | 
| 
      
 142 
     | 
    
         
            +
                end
         
     | 
| 
      
 143 
     | 
    
         
            +
              end
         
     | 
| 
      
 144 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/oci8lib_18.so
    ADDED
    
    | 
         Binary file 
     | 
    
        data/lib/oci8lib_191.so
    ADDED
    
    | 
         Binary file 
     | 
    
        data/metaconfig
    CHANGED
    
    | 
         @@ -10,7 +10,7 @@ ToplevelInstaller.module_eval { 
     | 
|
| 
       10 
10 
     | 
    
         
             
                old = Dir.pwd
         
     | 
| 
       11 
11 
     | 
    
         
             
                @installer.mkdir_p "#{objdir_root}/test"
         
     | 
| 
       12 
12 
     | 
    
         
             
                Dir.chdir "#{objdir_root}/test"
         
     | 
| 
       13 
     | 
    
         
            -
                @installer.ruby("-I#{srcdir_root}/ext/oci8 -I#{srcdir_root}/lib -I#{srcdir_root}/support -I#{srcdir_root}/test #{srcdir_root}/test/test_all.rb")
         
     | 
| 
      
 13 
     | 
    
         
            +
                @installer.ruby("-w -I#{srcdir_root}/ext/oci8 -I#{srcdir_root}/lib -I#{srcdir_root}/support -I#{srcdir_root}/test #{srcdir_root}/test/test_all.rb")
         
     | 
| 
       14 
14 
     | 
    
         
             
                Dir.chdir old
         
     | 
| 
       15 
15 
     | 
    
         
             
              end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
         @@ -120,8 +120,8 @@ install_files['oci8lib.so'] = <<-EOS 
     | 
|
| 
       120 
120 
     | 
    
         
             
            install_files['oci8.rb'] = <<-EOS
         
     | 
| 
       121 
121 
     | 
    
         
             
            #{get_zcontent('lib/oci8.rb')}EOS
         
     | 
| 
       122 
122 
     | 
    
         | 
| 
       123 
     | 
    
         
            -
            install_files[' 
     | 
| 
       124 
     | 
    
         
            -
            #{get_zcontent('lib/ 
     | 
| 
      
 123 
     | 
    
         
            +
            install_files['DBD/OCI8/OCI8.rb'] = <<-EOS
         
     | 
| 
      
 124 
     | 
    
         
            +
            #{get_zcontent('lib/DBD/OCI8/OCI8.rb')}EOS
         
     | 
| 
       125 
125 
     | 
    
         | 
| 
       126 
126 
     | 
    
         
             
            begin
         
     | 
| 
       127 
127 
     | 
    
         
             
              installer = Installer.new(install_files)
         
     | 
    
        data/ruby-oci8.gemspec
    CHANGED
    
    | 
         @@ -6,6 +6,7 @@ 
     | 
|
| 
       6 
6 
     | 
    
         
             
            # To make a binary gems package:
         
     | 
| 
       7 
7 
     | 
    
         
             
            #   gem build ruby-oci8.gemspec -- current
         
     | 
| 
       8 
8 
     | 
    
         
             
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
            if ARGV.size > 3
         
     | 
| 
       11 
12 
     | 
    
         
             
               gem_platform = ARGV[3]
         
     | 
| 
         @@ -23,32 +24,40 @@ spec = Gem::Specification.new do |s| 
     | 
|
| 
       23 
24 
     | 
    
         
             
              s.description = <<EOS
         
     | 
| 
       24 
25 
     | 
    
         
             
            ruby-oci8 is a ruby interface for Oracle using OCI8 API. It is available with Oracle8, Oracle8i, Oracle9i, Oracle10g and Oracle Instant Client.
         
     | 
| 
       25 
26 
     | 
    
         
             
            EOS
         
     | 
| 
       26 
     | 
    
         
            -
              s.autorequire = 'oci8'
         
     | 
| 
       27 
27 
     | 
    
         
             
              s.has_rdoc = true
         
     | 
| 
       28 
     | 
    
         
            -
              s.required_ruby_version = '~> 1.8.0'
         
     | 
| 
       29 
28 
     | 
    
         
             
              s.authors = ['KUBO Takehiro']
         
     | 
| 
       30 
29 
     | 
    
         
             
              s.platform = gem_platform
         
     | 
| 
       31 
30 
     | 
    
         
             
              files = File.read('dist-files').split("\n")
         
     | 
| 
       32 
31 
     | 
    
         
             
              if gem_platform == Gem::Platform::RUBY
         
     | 
| 
       33 
     | 
    
         
            -
                s.require_paths = ['lib']
         
     | 
| 
       34 
32 
     | 
    
         
             
                s.extensions << 'ext/oci8/extconf.rb'
         
     | 
| 
      
 33 
     | 
    
         
            +
                s.required_ruby_version = '>= 1.8.0'
         
     | 
| 
       35 
34 
     | 
    
         
             
              else
         
     | 
| 
       36 
     | 
    
         
            -
                 
     | 
| 
       37 
     | 
    
         
            -
                 
     | 
| 
       38 
     | 
    
         
            -
                 
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
                so_files = Dir.glob('ext/oci8/oci8lib_*.so')
         
     | 
| 
      
 36 
     | 
    
         
            +
                has_1_8 = so_files.include? 'ext/oci8/oci8lib_18.so'
         
     | 
| 
      
 37 
     | 
    
         
            +
                has_1_9_1 = so_files.include? 'ext/oci8/oci8lib_191.so'
         
     | 
| 
      
 38 
     | 
    
         
            +
                if has_1_8 and has_1_9_1
         
     | 
| 
      
 39 
     | 
    
         
            +
                  puts 'Binary gem for ruby 1.8 and 1.9.1'
         
     | 
| 
      
 40 
     | 
    
         
            +
                  s.required_ruby_version = '>= 1.8.0'
         
     | 
| 
      
 41 
     | 
    
         
            +
                elsif has_1_8 and !has_1_9_1
         
     | 
| 
      
 42 
     | 
    
         
            +
                  puts 'Binary gem for ruby 1.8'
         
     | 
| 
      
 43 
     | 
    
         
            +
                  s.required_ruby_version = '~> 1.8.0'
         
     | 
| 
      
 44 
     | 
    
         
            +
                elsif !has_1_8 and has_1_9_1
         
     | 
| 
      
 45 
     | 
    
         
            +
                  puts 'Binary gem for ruby 1.9.1'
         
     | 
| 
      
 46 
     | 
    
         
            +
                  s.required_ruby_version = '~> 1.9.1'
         
     | 
| 
      
 47 
     | 
    
         
            +
                else
         
     | 
| 
      
 48 
     | 
    
         
            +
                  raise "No compiled binary are found. Run make in advance."
         
     | 
| 
       40 
49 
     | 
    
         
             
                end
         
     | 
| 
       41 
     | 
    
         
            -
                 
     | 
| 
       42 
     | 
    
         
            -
                 
     | 
| 
       43 
     | 
    
         
            -
                   
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                   
     | 
| 
       47 
     | 
    
         
            -
                  files << file
         
     | 
| 
      
 50 
     | 
    
         
            +
                FileUtils.copy so_files, 'lib', :preserve => true
         
     | 
| 
      
 51 
     | 
    
         
            +
                files.reject! do |fname|
         
     | 
| 
      
 52 
     | 
    
         
            +
                  fname =~ /^ext/
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
                so_files.each do |fname|
         
     | 
| 
      
 55 
     | 
    
         
            +
                  files << 'lib/' + File.basename(fname)
         
     | 
| 
       48 
56 
     | 
    
         
             
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
                files << 'lib/oci8.rb'
         
     | 
| 
       49 
58 
     | 
    
         
             
              end
         
     | 
| 
       50 
59 
     | 
    
         
             
              s.files = files
         
     | 
| 
       51 
60 
     | 
    
         
             
              s.test_files = 'test/test_all.rb'
         
     | 
| 
       52 
     | 
    
         
            -
              s.rdoc_options = ['--main', 'README' 
     | 
| 
      
 61 
     | 
    
         
            +
              s.rdoc_options = ['--main', 'README']
         
     | 
| 
       53 
62 
     | 
    
         
             
              s.extra_rdoc_files = ['README']
         
     | 
| 
       54 
63 
     | 
    
         
             
            end
         
     | 
    
        data/setup.rb
    CHANGED
    
    | 
         @@ -91,7 +91,7 @@ end 
     | 
|
| 
       91 
91 
     | 
    
         
             
            # Config
         
     | 
| 
       92 
92 
     | 
    
         
             
            #
         
     | 
| 
       93 
93 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
            if arg = ARGV.detect{| 
     | 
| 
      
 94 
     | 
    
         
            +
            if arg = ARGV.detect{|a| /\A--rbconfig=/ =~ a }
         
     | 
| 
       95 
95 
     | 
    
         
             
              ARGV.delete(arg)
         
     | 
| 
       96 
96 
     | 
    
         
             
              require arg.split(/=/, 2)[1]
         
     | 
| 
       97 
97 
     | 
    
         
             
              $".push 'rbconfig.rb'
         
     | 
| 
         @@ -145,7 +145,7 @@ class ConfigTable 
     | 
|
| 
       145 
145 
     | 
    
         
             
                sodir      = "$site-ruby/#{c['arch']}"
         
     | 
| 
       146 
146 
     | 
    
         
             
              end
         
     | 
| 
       147 
147 
     | 
    
         | 
| 
       148 
     | 
    
         
            -
              if arg = c['configure_args'].split.detect {| 
     | 
| 
      
 148 
     | 
    
         
            +
              if arg = c['configure_args'].split.detect {|a| /--with-make-prog=/ =~ a }
         
     | 
| 
       149 
149 
     | 
    
         
             
                makeprog = arg.sub(/'/, '').split(/=/, 2)[1]
         
     | 
| 
       150 
150 
     | 
    
         
             
              else
         
     | 
| 
       151 
151 
     | 
    
         
             
                makeprog = 'make'
         
     | 
| 
         @@ -495,7 +495,7 @@ module FileOperations 
     | 
|
| 
       495 
495 
     | 
    
         
             
              end
         
     | 
| 
       496 
496 
     | 
    
         | 
| 
       497 
497 
     | 
    
         
             
              REJECT_DIRS = %w(
         
     | 
| 
       498 
     | 
    
         
            -
                CVS SCCS RCS CVS.adm
         
     | 
| 
      
 498 
     | 
    
         
            +
                CVS SCCS RCS CVS.adm .svn .git
         
     | 
| 
       499 
499 
     | 
    
         
             
              )
         
     | 
| 
       500 
500 
     | 
    
         | 
| 
       501 
501 
     | 
    
         
             
              def all_dirs_in(dirname)
         
     | 
| 
         @@ -1163,7 +1163,7 @@ class Installer 
     | 
|
| 
       1163 
1163 
     | 
    
         
             
              end
         
     | 
| 
       1164 
1164 
     | 
    
         | 
| 
       1165 
1165 
     | 
    
         
             
              def ruby_scripts
         
     | 
| 
       1166 
     | 
    
         
            -
                collect_filenames_auto().select {|n| /\.rb\z/ =~ n }
         
     | 
| 
      
 1166 
     | 
    
         
            +
                collect_filenames_auto().select {|n| /\.(rb|yml)\z/ =~ n }
         
     | 
| 
       1167 
1167 
     | 
    
         
             
              end
         
     | 
| 
       1168 
1168 
     | 
    
         | 
| 
       1169 
1169 
     | 
    
         
             
              # picked up many entries from cvs-1.11.1/src/ignore.c
         
     | 
    
        data/test/config.rb
    CHANGED
    
    | 
         @@ -24,106 +24,86 @@ $lobreadnum = 256 # counts in charactors 
     | 
|
| 
       24 
24 
     | 
    
         
             
            # $oracle_client_version: Oracle client library version for which oci8 is compiled.
         
     | 
| 
       25 
25 
     | 
    
         
             
            # $oracle_version: lower value of $oracle_server_version and $oracle_client_version.
         
     | 
| 
       26 
26 
     | 
    
         
             
            conn = OCI8.new($dbuser, $dbpass, $dbname)
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
               
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
            begin
         
     | 
| 
      
 28 
     | 
    
         
            +
              conn.exec('select value from database_compatible_level') do |row|
         
     | 
| 
      
 29 
     | 
    
         
            +
                $oracle_server_version = OCI8::OracleVersion.new(row[0])
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            rescue OCIError
         
     | 
| 
      
 32 
     | 
    
         
            +
              raise if $!.code != 942 # ORA-00942: table or view does not exist
         
     | 
| 
      
 33 
     | 
    
         
            +
              $oracle_server_version = OCI8::ORAVER_8_0
         
     | 
| 
       30 
34 
     | 
    
         
             
            end
         
     | 
| 
       31 
35 
     | 
    
         
             
            conn.logoff
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
            if $oracle_server_version <  
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            if $oracle_server_version < OCI8.oracle_client_version
         
     | 
| 
       34 
38 
     | 
    
         
             
              $oracle_version = $oracle_server_version
         
     | 
| 
       35 
39 
     | 
    
         
             
            else
         
     | 
| 
       36 
     | 
    
         
            -
              $oracle_version =  
     | 
| 
      
 40 
     | 
    
         
            +
              $oracle_version = OCI8.oracle_client_version
         
     | 
| 
       37 
41 
     | 
    
         
             
            end
         
     | 
| 
       38 
42 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
            if $oracle_version  
     | 
| 
       40 
     | 
    
         
            -
              $describe_need_object_mode = true
         
     | 
| 
       41 
     | 
    
         
            -
              $test_clob = false
         
     | 
| 
       42 
     | 
    
         
            -
            elsif $oracle_version < 810
         
     | 
| 
       43 
     | 
    
         
            -
              $describe_need_object_mode = false
         
     | 
| 
      
 43 
     | 
    
         
            +
            if $oracle_version < OCI8::ORAVER_8_1
         
     | 
| 
       44 
44 
     | 
    
         
             
              $test_clob = false
         
     | 
| 
       45 
45 
     | 
    
         
             
            else
         
     | 
| 
       46 
     | 
    
         
            -
              $describe_need_object_mode = false
         
     | 
| 
       47 
46 
     | 
    
         
             
              $test_clob = true
         
     | 
| 
       48 
47 
     | 
    
         
             
            end
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
               
     | 
| 
       52 
     | 
    
         
            -
                 
     | 
| 
       53 
     | 
    
         
            -
              rescue OCIError
         
     | 
| 
       54 
     | 
    
         
            -
                raise if $!.code != 12516 && $!.code != 12520
         
     | 
| 
       55 
     | 
    
         
            -
                # sleep a few seconds and try again if
         
     | 
| 
       56 
     | 
    
         
            -
                # the error code is ORA-12516 or ORA-12520.
         
     | 
| 
       57 
     | 
    
         
            -
                #
         
     | 
| 
       58 
     | 
    
         
            -
                # ORA-12516 - TNS:listener could not find available handler with
         
     | 
| 
       59 
     | 
    
         
            -
                #             matching protocol stack
         
     | 
| 
       60 
     | 
    
         
            -
                # ORA-12520 - TNS:listener could not find available handler for
         
     | 
| 
       61 
     | 
    
         
            -
                #             requested type of server
         
     | 
| 
       62 
     | 
    
         
            -
                #
         
     | 
| 
       63 
     | 
    
         
            -
                # Thanks to Christopher Jones.
         
     | 
| 
       64 
     | 
    
         
            -
                #
         
     | 
| 
       65 
     | 
    
         
            -
                # Ref: The Underground PHP and Oracle Manual (page 175 in vesion 1.4)
         
     | 
| 
       66 
     | 
    
         
            -
                #      http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf
         
     | 
| 
       67 
     | 
    
         
            -
                #
         
     | 
| 
       68 
     | 
    
         
            -
                sleep(5)
         
     | 
| 
       69 
     | 
    
         
            -
                yield
         
     | 
| 
       70 
     | 
    
         
            -
              end
         
     | 
| 
       71 
     | 
    
         
            -
            end
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
            $env_is_initialized = false
         
     | 
| 
       74 
     | 
    
         
            -
            def setup_lowapi()
         
     | 
| 
       75 
     | 
    
         
            -
              if ! $env_is_initialized
         
     | 
| 
       76 
     | 
    
         
            -
                if $describe_need_object_mode
         
     | 
| 
       77 
     | 
    
         
            -
                  OCIEnv.initialise(OCI_OBJECT)
         
     | 
| 
       78 
     | 
    
         
            -
                else
         
     | 
| 
       79 
     | 
    
         
            -
                  OCIEnv.initialise(OCI_DEFAULT)
         
     | 
| 
       80 
     | 
    
         
            -
                end
         
     | 
| 
       81 
     | 
    
         
            -
                $env_is_initialized = true
         
     | 
| 
       82 
     | 
    
         
            -
              end
         
     | 
| 
       83 
     | 
    
         
            -
              env = OCIEnv.init()
         
     | 
| 
       84 
     | 
    
         
            -
              svc = do_connect { env.logon($dbuser, $dbpass, $dbname) }
         
     | 
| 
       85 
     | 
    
         
            -
              stmt = env.alloc(OCIStmt)
         
     | 
| 
       86 
     | 
    
         
            -
              return env, svc, stmt
         
     | 
| 
       87 
     | 
    
         
            -
            end
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
            def get_oci_connection()
         
     | 
| 
       90 
     | 
    
         
            -
              do_connect { OCI8.new($dbuser, $dbpass, $dbname) }
         
     | 
| 
       91 
     | 
    
         
            -
            end
         
     | 
| 
      
 49 
     | 
    
         
            +
            module Test
         
     | 
| 
      
 50 
     | 
    
         
            +
              module Unit
         
     | 
| 
      
 51 
     | 
    
         
            +
                class TestCase
         
     | 
| 
       92 
52 
     | 
    
         | 
| 
       93 
     | 
    
         
            -
            def  
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
      
 53 
     | 
    
         
            +
                  def get_oci8_connection()
         
     | 
| 
      
 54 
     | 
    
         
            +
                    OCI8.new($dbuser, $dbpass, $dbname)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  rescue OCIError
         
     | 
| 
      
 56 
     | 
    
         
            +
                    raise if $!.code != 12516 && $!.code != 12520
         
     | 
| 
      
 57 
     | 
    
         
            +
                    # sleep a few second and try again if
         
     | 
| 
      
 58 
     | 
    
         
            +
                    # the error code is ORA-12516 or ORA-12520.
         
     | 
| 
      
 59 
     | 
    
         
            +
                    #
         
     | 
| 
      
 60 
     | 
    
         
            +
                    # ORA-12516 - TNS:listener could not find available handler with
         
     | 
| 
      
 61 
     | 
    
         
            +
                    #             matching protocol stack
         
     | 
| 
      
 62 
     | 
    
         
            +
                    # ORA-12520 - TNS:listener could not find available handler for
         
     | 
| 
      
 63 
     | 
    
         
            +
                    #             requested type of server
         
     | 
| 
      
 64 
     | 
    
         
            +
                    #
         
     | 
| 
      
 65 
     | 
    
         
            +
                    # Thanks to Christopher Jones.
         
     | 
| 
      
 66 
     | 
    
         
            +
                    #
         
     | 
| 
      
 67 
     | 
    
         
            +
                    # Ref: The Underground PHP and Oracle Manual (page 175 in vesion 1.4)
         
     | 
| 
      
 68 
     | 
    
         
            +
                    #      http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf
         
     | 
| 
      
 69 
     | 
    
         
            +
                    #
         
     | 
| 
      
 70 
     | 
    
         
            +
                    sleep(5)
         
     | 
| 
      
 71 
     | 
    
         
            +
                    OCI8.new($dbuser, $dbpass, $dbname)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
       96 
73 
     | 
    
         | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
                    #  
     | 
| 
       102 
     | 
    
         
            -
                     
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                    # Oracle 10g -
         
     | 
| 
       105 
     | 
    
         
            -
                    sql = "DROP TABLE #{table_name} PURGE"
         
     | 
| 
      
 74 
     | 
    
         
            +
                  def get_dbi_connection()
         
     | 
| 
      
 75 
     | 
    
         
            +
                    DBI.connect("dbi:OCI8:#{$dbname}", $dbuser, $dbpass, 'AutoCommit' => false)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  rescue DBI::DatabaseError
         
     | 
| 
      
 77 
     | 
    
         
            +
                    raise if $!.err != 12516 && $!.err != 12520
         
     | 
| 
      
 78 
     | 
    
         
            +
                    # same as get_oci8_connection()
         
     | 
| 
      
 79 
     | 
    
         
            +
                    sleep(5)
         
     | 
| 
      
 80 
     | 
    
         
            +
                    DBI.connect("dbi:OCI8:#{$dbname}", $dbuser, $dbpass, 'AutoCommit' => false)
         
     | 
| 
       106 
81 
     | 
    
         
             
                  end
         
     | 
| 
       107 
82 
     | 
    
         | 
| 
       108 
     | 
    
         
            -
                   
     | 
| 
       109 
     | 
    
         
            -
                     
     | 
| 
       110 
     | 
    
         
            -
                       
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
                    begin
         
     | 
| 
       116 
     | 
    
         
            -
                      @dbh.do(sql)
         
     | 
| 
       117 
     | 
    
         
            -
                    rescue DBI::DatabaseError
         
     | 
| 
       118 
     | 
    
         
            -
                      raise if $!.err != 942 # table or view does not exist
         
     | 
| 
      
 83 
     | 
    
         
            +
                  def drop_table(table_name)
         
     | 
| 
      
 84 
     | 
    
         
            +
                    if $oracle_server_version < OCI8::ORAVER_10_1
         
     | 
| 
      
 85 
     | 
    
         
            +
                      # Oracle 8 - 9i
         
     | 
| 
      
 86 
     | 
    
         
            +
                      sql = "DROP TABLE #{table_name}"
         
     | 
| 
      
 87 
     | 
    
         
            +
                    else
         
     | 
| 
      
 88 
     | 
    
         
            +
                      # Oracle 10g -
         
     | 
| 
      
 89 
     | 
    
         
            +
                      sql = "DROP TABLE #{table_name} PURGE"
         
     | 
| 
       119 
90 
     | 
    
         
             
                    end
         
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
                     
     | 
| 
       122 
     | 
    
         
            -
                       
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
                       
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                    if defined? @conn
         
     | 
| 
      
 93 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 94 
     | 
    
         
            +
                        @conn.exec(sql)
         
     | 
| 
      
 95 
     | 
    
         
            +
                      rescue OCIError
         
     | 
| 
      
 96 
     | 
    
         
            +
                        raise if $!.code != 942 # table or view does not exist
         
     | 
| 
      
 97 
     | 
    
         
            +
                      end
         
     | 
| 
      
 98 
     | 
    
         
            +
                    elsif instance_variable_get(:@dbh)
         
     | 
| 
      
 99 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 100 
     | 
    
         
            +
                        @dbh.do(sql)
         
     | 
| 
      
 101 
     | 
    
         
            +
                      rescue DBI::DatabaseError
         
     | 
| 
      
 102 
     | 
    
         
            +
                        raise if $!.err != 942 # table or view does not exist
         
     | 
| 
      
 103 
     | 
    
         
            +
                      end
         
     | 
| 
       125 
104 
     | 
    
         
             
                    end
         
     | 
| 
       126 
     | 
    
         
            -
                  end
         
     | 
| 
       127 
     | 
    
         
            -
                end 
     | 
| 
      
 105 
     | 
    
         
            +
                  end # drop_table
         
     | 
| 
      
 106 
     | 
    
         
            +
                end
         
     | 
| 
       128 
107 
     | 
    
         
             
              end
         
     | 
| 
       129 
108 
     | 
    
         
             
            end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
    
        data/test/test_all.rb
    CHANGED
    
    | 
         @@ -1,48 +1,41 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'runit/testsuite'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'runit/cui/testrunner'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
1 
     | 
    
         
             
            srcdir = File.dirname(__FILE__)
         
     | 
| 
       5 
2 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'oci8'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'test/unit'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require "#{srcdir}/config"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       7 
7 
     | 
    
         
             
            require "#{srcdir}/test_oradate"
         
     | 
| 
       8 
8 
     | 
    
         
             
            require "#{srcdir}/test_oranumber"
         
     | 
| 
       9 
     | 
    
         
            -
            require "#{srcdir}/test_describe"
         
     | 
| 
       10 
9 
     | 
    
         
             
            require "#{srcdir}/test_bind_time"
         
     | 
| 
       11 
10 
     | 
    
         
             
            require "#{srcdir}/test_bind_raw"
         
     | 
| 
       12 
11 
     | 
    
         
             
            if $test_clob
         
     | 
| 
       13 
12 
     | 
    
         
             
              require "#{srcdir}/test_clob"
         
     | 
| 
       14 
13 
     | 
    
         
             
            end
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
            # High-level API
         
     | 
| 
       17 
15 
     | 
    
         
             
            require "#{srcdir}/test_break"
         
     | 
| 
       18 
16 
     | 
    
         
             
            require "#{srcdir}/test_oci8"
         
     | 
| 
      
 17 
     | 
    
         
            +
            require "#{srcdir}/test_datetime"
         
     | 
| 
       19 
18 
     | 
    
         
             
            require "#{srcdir}/test_connstr"
         
     | 
| 
       20 
19 
     | 
    
         
             
            require "#{srcdir}/test_metadata"
         
     | 
| 
      
 20 
     | 
    
         
            +
            require "#{srcdir}/test_array_dml"
         
     | 
| 
       21 
21 
     | 
    
         
             
            require "#{srcdir}/test_rowid"
         
     | 
| 
      
 22 
     | 
    
         
            +
            require "#{srcdir}/test_oracle_version"
         
     | 
| 
       22 
23 
     | 
    
         | 
| 
       23 
24 
     | 
    
         
             
            # Ruby/DBI
         
     | 
| 
       24 
25 
     | 
    
         
             
            begin
         
     | 
| 
       25 
26 
     | 
    
         
             
              require 'dbi'
         
     | 
| 
      
 27 
     | 
    
         
            +
              is_dbi_loaded = true
         
     | 
| 
       26 
28 
     | 
    
         
             
            rescue LoadError
         
     | 
| 
       27 
     | 
    
         
            -
               
     | 
| 
       28 
     | 
    
         
            -
                require 'rubygems'
         
     | 
| 
       29 
     | 
    
         
            -
                require 'dbi'
         
     | 
| 
       30 
     | 
    
         
            -
              rescue LoadError
         
     | 
| 
       31 
     | 
    
         
            -
                dbi_not_found = false
         
     | 
| 
       32 
     | 
    
         
            -
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
              is_dbi_loaded = false
         
     | 
| 
       33 
30 
     | 
    
         
             
            end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
            if is_dbi_loaded
         
     | 
| 
       35 
32 
     | 
    
         
             
              require "#{srcdir}/test_dbi"
         
     | 
| 
       36 
33 
     | 
    
         
             
              if $test_clob
         
     | 
| 
       37 
34 
     | 
    
         
             
                require "#{srcdir}/test_dbi_clob"
         
     | 
| 
       38 
35 
     | 
    
         
             
              end
         
     | 
| 
       39 
36 
     | 
    
         
             
            end
         
     | 
| 
       40 
37 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
               
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
              end
         
     | 
| 
       46 
     | 
    
         
            -
            }
         
     | 
| 
       47 
     | 
    
         
            -
            #RUNIT::CUI::TestRunner.quiet_mode = true
         
     | 
| 
       48 
     | 
    
         
            -
            RUNIT::CUI::TestRunner.run(suite)
         
     | 
| 
      
 38 
     | 
    
         
            +
            #Test::Unit::AutoRunner.run(true, true)
         
     | 
| 
      
 39 
     | 
    
         
            +
            if defined? Test::Unit::AutoRunner
         
     | 
| 
      
 40 
     | 
    
         
            +
              Test::Unit::AutoRunner.run()
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     |