diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index aef603d923..c1d4b231c3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -2288,8 +2288,13 @@ final class Tools { // Consume the whole string literal for (;;) { + // [#9648] The "string literal" might not be one, if we're inside + // of some vendor specific comment syntax + if (i >= sqlChars.length) + break characterLoop; + // [#3000] [#3630] Consume backslash-escaped characters if needed - if (sqlChars[i] == '\\' && needsBackslashEscaping) + else if (sqlChars[i] == '\\' && needsBackslashEscaping) render.sql(sqlChars[i++]); // Consume an escaped apostrophe @@ -2403,8 +2408,14 @@ final class Tools { identifierLoop: for (;;) { + + // [#9648] The "identifier" might not be one, if we're inside + // of some vendor specific comment syntax + if (i >= sqlChars.length) + break characterLoop; + // Consume an escaped quote - if (peek(sqlChars, i, quotes[QUOTE_END_DELIMITER_ESCAPED][delimiter])) { + else if (peek(sqlChars, i, quotes[QUOTE_END_DELIMITER_ESCAPED][delimiter])) { for (int d = 0; d < quotes[QUOTE_END_DELIMITER_ESCAPED][delimiter].length; d++) render.sql(sqlChars[i++]);