Ruby-oci8 1.0.0-rc3

ruby-oci8 1.0.0-rc3 is released. This is a Oracle module using OCI8 API.

http://rubyforge.org/projects/ruby-oci8/

What’s new.

  1. support external OS authentication.
    (suggested by Dan Fitch)

    conn = OCI8.new(‘/’)
    or
    conn = OCI8.new(nil, nil)

  2. incompatible change on connect string.

    You need to pass only one argument to OCI8.new to parse the
    first argument as a SQL*Plus-like connect string.

    For example, OCI8.new(‘scott/tiger’, nil) was parsed as the
    username is ‘scott’ and the password is ‘tiger’ in 1.0.0-rc2.
    But from now on, it is treated as the username is ‘scott/tiger’
    and the password is nil because it has two arguments. You need
    to use OCI8.new(‘scott/tiger’) instead.

  3. fix NCLOB support on Oracle 9i.
    (reported by Matthew Noble)

    1.0.0-rc2’s NCLOB support worked on Oracle 10g only.

  4. fix a problem to compile with a third-party x86_64 rpm package.
    (contributed by Jeff A.)

    The x86_64 source rpm packages are found on the following URLs.
    [freshrpms.net] - Oracle 10g Instant Client on RHEL4 and RHEL5
    http://remi.collet.free.fr/index.php?2007/01/22/279-oracle-instant-client-10203-on-x86_64

  5. ‘–with-instant-client’ option become obsolete and is ignored.

    Use LD_LIBRARY_PATH(Linux), PATH(Windows), etc. to indicate
    the instant client’s location.

  6. fix some other minor problems.

What will be new in the next release.

  1. The vesion will be 1.0.0.

  2. No data rounding between ruby’s Float and Oracle’s
    BINARY_DOUBLE when using bind variables.

    In ruby-oci8 1.0.0-rc3 and earlier, even though an Oracle’s
    column is defined as BINARY_DOUBLE, there are data convertions
    between the server and the client. That’s because the network
    data representation is not BINARY_DOUBLE but Oracle’s NUMBER
    datatype. The client-side’s ruby Float become Oracle NUMBER
    on the network and become BINARY_DOUBLE on the server. Ruby’s
    Flaot and Oracle’s BINARY_DOUBLE are both IEEE 754 double
    precision floating number, but Oracle NUMBER is base-100
    floating number. It causes rounding problems. You can store
    almost same but not exactly same values to the server.

    In ruby-oci8 1.0.0, the network data representation will be
    same with BINARY_DOUBLE if the client and server’s version is
    Oracle 10g. There will be no data conversion except changing
    byte order.

    Note: Rails cannot store exactly same Float values to the server
    even though after ruby-oci8 1.0.0 is released. That’s
    because rails doesn’t use real bind variables.