=== modified file 'src/com/mysql/jdbc/EscapeTokenizer.java' --- src/com/mysql/jdbc/EscapeTokenizer.java 2008-10-20 22:29:45 +0000 +++ src/com/mysql/jdbc/EscapeTokenizer.java 2009-02-09 21:03:05 +0000 @@ -108,11 +108,13 @@ if (this.inQuotes && c == quoteChar) { if (this.pos + 1 < this.sourceLength) { if (this.source.charAt(this.pos + 1) == quoteChar) { - // Doubled-up quote escape - tokenBuf.append(quoteChar); - tokenBuf.append(quoteChar); - this.pos++; - continue; + // Doubled-up quote escape, if the first quote isn't already escaped + if (this.lastChar != '\\') { + tokenBuf.append(quoteChar); + tokenBuf.append(quoteChar); + this.pos++; + continue; + } } } } === modified file 'src/testsuite/regression/StatementRegressionTest.java' --- src/testsuite/regression/StatementRegressionTest.java 2009-02-02 17:00:13 +0000 +++ src/testsuite/regression/StatementRegressionTest.java 2009-02-09 21:05:48 +0000 @@ -5825,4 +5825,18 @@ closeMemberJDBCResources(); } } + + /** + * Bug #42253 - multiple escaped quotes cause exception from EscapeProcessor. + */ + public void testBug42253() throws Exception { + try { + rs = stmt.executeQuery("select '\\'\\'','{t\\'}'"); + rs.next(); + assertEquals("''", rs.getString(1)); + assertEquals("{t'}", rs.getString(2)); + } finally { + closeMemberJDBCResources(); + } + } } \ No newline at end of file