Title: [745] trunk/activerecord-jdbc: Fix several small issues with Oracle.
Revision
745
Author
olabini
Date
2007-09-26 08:01:30 -0400 (Wed, 26 Sep 2007)

Log Message

Fix several small issues with Oracle. From 29F/E to 18F7E

Modified Paths


Diff

Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_oracle.rb (744 => 745)


--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_oracle.rb	2007-09-25 15:19:21 UTC (rev 744)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_oracle.rb	2007-09-26 12:01:30 UTC (rev 745)
@@ -50,7 +50,7 @@
     
     module Column
       def type_cast(value)
-        return nil if value.nil? || value =~ /^\s*null\s*$/i
+        return nil if value.nil?
         case type
         when :string   then value
         when :integer  then defined?(value.to_i) ? value.to_i : (value ? 1 : 0)

Modified: trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java (744 => 745)


--- trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java	2007-09-25 15:19:21 UTC (rev 744)
+++ trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java	2007-09-26 12:01:30 UTC (rev 745)
@@ -275,7 +275,9 @@
     private static IRubyObject unmarshal_columns(IRubyObject recv, DatabaseMetaData metadata, ResultSet rs) throws SQLException, IOException {
         try {
             List columns = new ArrayList();
-            boolean isDerby = metadata.getClass().getName().indexOf("derby") != -1;
+            String clzName = metadata.getClass().getName().toLowerCase();
+            boolean isDerby = clzName.indexOf("derby") != -1;
+            boolean isOracle = clzName.indexOf("oracle") != -1 || clzName.indexOf("oci") != -1;
             Ruby runtime = recv.getRuntime();
             ThreadContext ctx = runtime.getCurrentContext();
 
@@ -309,10 +311,13 @@
                 }
                 String def = rs.getString(13);
                 IRubyObject _def;
-                if(def == null) {
+                if(def == null || (isOracle && def.toLowerCase().equals("null"))) {
                     _def = runtime.getNil();
                 } else {
-                    if(isDerby && def.length() > 0 && def.charAt(0) == '\'') {
+                    if(isOracle) {
+                        def = def.trim();
+                    }
+                    if((isDerby || isOracle) && def.length() > 0 && def.charAt(0) == '\'') {
                         def = def.substring(1, def.length()-1);
                     }
                     _def = runtime.newString(def);
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to