Ruby-oci8 2.0.4

Ruby-oci8 2.0.4 is released. This is Oracle module using OCI8 API.

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

This is a maintenance release. Few new features and many fixed issues.
More than 50 % of issues are reported by Raimonds Simanovskis. Many
thanks.

The Windows binary gem was compiled by mingw. It works with both Legacy
One-Click installer and RubyInstaller.

  • New Features

    • OCI8.error_message(message_no) → string

      Gets the Oracle error message specified by message id.
      Its language depends on NLS_LANGUAGE.

      Note: This method is unavailable if the Oracle client
      version is 8.0.

      When NLS_LANG is AMERICAN_AMERICA.AL32UTF8

      OCI8.error_message(1)

      => “ORA-00001: unique constraint (%s.%s) violated”

      When NLS_LANG is FRENCH_FRANCE.AL32UTF8

      OCI8.error_message(1)

      => “ORA-00001: violation de contrainte unique (%s.%s)”

    • OraNumber#dump → string

      Returns OraNumber’s internal representation whose format
      is same with the return value of Oracle SQL function DUMP().

      OraNumber.new(100).dump #=> “Typ=2 Len=2: 194,2”
      OraNumber.new(123).dump #=> “Typ=2 Len=3: 194,2,24”
      OraNumber.new(0.1).dump #=> “Typ=2 Len=2: 192,11”

  • Fixed issues

    • Fractional second part is lost when ruby’s Time instance is bound
      to Oracle datatype TIMESTAMP.
      (reported by Raimonds Simanovskis)

    • OraNumber#to_i and OraNumber#to_s fail when its scale is larger
      than 38.
      (reported by Raimonds Simanovskis)

    • Memory leak about 30 bytes per one place holder for object type.

    • Segmentation fault when a collection of string is bound.
      (reported by Raimonds Simanovskis)

    • Segmentation fault when GC starts while initializing a bind
      object for object type.
      (reported by Remi G.)

    • Segmentation fault when OCI8::Cursor#fetch is called prior to
      OCI8::Cursor#exec.

    • Detailed error message is not reported when PL/SQL NO_DATA_FOUND
      exception is raised.
      (reported by Raimonds Simanovskis)