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