Title: [1013] trunk/activerecord-jdbc: JRUBY-2382:
mysql string quoting fails with ArrayIndexOutofBoundsException (Jan Berkel
)
- Revision
- 1013
- Author
- nicksieger
- Date
- 2008-06-03 23:41:40 -0400 (Tue, 03 Jun 2008)
Log Message
JRUBY-2382: mysql string quoting fails with ArrayIndexOutofBoundsException (Jan Berkel)
Modified Paths
Diff
Modified: trunk/activerecord-jdbc/History.txt (1012 => 1013)
--- trunk/activerecord-jdbc/History.txt 2008-06-04 03:17:13 UTC (rev 1012)
+++ trunk/activerecord-jdbc/History.txt 2008-06-04 03:41:40 UTC (rev 1013)
@@ -17,6 +17,7 @@
- 10021: very preliminary sybase support. (Mark Atkinson) Not usable until collision w/ sqlserver driver is resolved.
- JRUBY-2312, JRUBY-2319, JRUBY-2322: Oracle timestamping issues (Jesse Hu & Michael König)
- JRUBY-2422: Fix MySQL referential integrity and rollback issues
+- JRUBY-2382: mysql string quoting fails with ArrayIndexOutofBoundsException
== 0.8
Modified: trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcMySQLSpec.java (1012 => 1013)
--- trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcMySQLSpec.java 2008-06-04 03:17:13 UTC (rev 1012)
+++ trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcMySQLSpec.java 2008-06-04 03:41:40 UTC (rev 1013)
@@ -66,7 +66,7 @@
default: continue;
}
if(i > startOfExtend)
- blNew.append(bl, startOfExtend, i-startOfExtend);
+ blNew.append(bl, startOfExtend-bl.begin, i-startOfExtend);
blNew.append(rep, 0, 2);
startOfExtend = i+1;
}
@@ -75,7 +75,7 @@
return string;
}
if (bl.begin + bl.realSize > startOfExtend)
- blNew.append(bl, startOfExtend, bl.begin + bl.realSize - startOfExtend);
+ blNew.append(bl, startOfExtend-bl.begin, bl.begin + bl.realSize - startOfExtend);
return recv.getRuntime().newStringShared(blNew);
}
Modified: trunk/activerecord-jdbc/test/mysql_simple_test.rb (1012 => 1013)
--- trunk/activerecord-jdbc/test/mysql_simple_test.rb 2008-06-04 03:17:13 UTC (rev 1012)
+++ trunk/activerecord-jdbc/test/mysql_simple_test.rb 2008-06-04 03:41:40 UTC (rev 1013)
@@ -10,6 +10,15 @@
class MysqlSimpleTest < Test::Unit::TestCase
include SimpleTestMethods
+
+ def test_string_quoting_oddity
+ s = "0123456789a'a"
+ assert_equal "'0123456789a\\'a'", ActiveRecord::Base.connection.quote(s)
+
+ s2 = s[10,3]
+ assert_equal "a'a", s2
+ assert_equal "'a\\'a'", ActiveRecord::Base.connection.quote(s2)
+ end
end
class MysqlHasManyThroughTest < Test::Unit::TestCase
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel