Title: [506] trunk/activerecord-jdbc: Derby is stupid and handles default values VERY stupidly...
- Revision
- 506
- Author
- olabini
- Date
- 2007-04-26 07:21:31 -0400 (Thu, 26 Apr 2007)
Log Message
Derby is stupid and handles default values VERY stupidly... gah
Modified Paths
Diff
Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_derby.rb (505 => 506)
--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_derby.rb 2007-04-26 09:42:15 UTC (rev 505)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_derby.rb 2007-04-26 11:21:31 UTC (rev 506)
@@ -145,8 +145,17 @@
end
end
+ # There seems to be more than one thing wrong with
+ # changing defaults for VARCHAR columns right now... DERBY-2371
+ # among others
def change_column_default(table_name, column_name, default) #:nodoc:
- execute "ALTER TABLE #{table_name} ALTER COLUMN #{column_name} SET DEFAULT #{quote(default)}"
+ begin
+ execute "ALTER TABLE #{table_name} ALTER COLUMN #{column_name} DEFAULT #{quote(default)}"
+ rescue
+ alter_table(table_name) do |definition|
+ definition[column_name].default = default
+ end
+ end
end
# Support for renaming columns:
Modified: trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java (505 => 506)
--- trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java 2007-04-26 09:42:15 UTC (rev 505)
+++ trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java 2007-04-26 11:21:31 UTC (rev 506)
@@ -235,6 +235,7 @@
private static IRubyObject unmarshal_columns(IRubyObject recv, DatabaseMetaData metadata, ResultSet rs) throws SQLException, IOException {
List columns = new ArrayList();
+ boolean isDerby = metadata.getClass().getName().indexOf("derby") != -1;
Ruby runtime = recv.getRuntime();
ThreadContext ctx = runtime.getCurrentContext();
@@ -271,6 +272,9 @@
if(def == null) {
_def = runtime.getNil();
} else {
+ if(isDerby && 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