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

Reply via email to