22 SPDX-FileCopyrightText: Copyright 2001-2002 David Jencks
33 SPDX-FileCopyrightText: Copyright 2002-2005 Roman Rokytskyy
44 SPDX-FileCopyrightText: Copyright 2003 Blas Rodriguez Somoza
5- SPDX-FileCopyrightText: Copyright 2012-2025 Mark Rotteveel
5+ SPDX-FileCopyrightText: Copyright 2012-2026 Mark Rotteveel
66 SPDX-License-Identifier: LGPL-2.1-or-later
77*/
88package org .firebirdsql .jdbc .escape ;
@@ -133,9 +133,9 @@ public String toNative(String sql) throws SQLException {
133133 case INITIAL_STATE -> {
134134 // Ignore leading whitespace
135135 }
136- case NORMAL_STATE , LITERAL_STATE ,
137- START_LINE_COMMENT , LINE_COMMENT , START_BLOCK_COMMENT , BLOCK_COMMENT , END_BLOCK_COMMENT ,
138- POSSIBLE_Q_LITERAL_ENTER -> buffer .append (currentChar );
136+ case NORMAL_STATE , LITERAL_STATE , DELIMITED_IDENTIFIER ,
137+ START_LINE_COMMENT , LINE_COMMENT , START_BLOCK_COMMENT , BLOCK_COMMENT , END_BLOCK_COMMENT ,
138+ POSSIBLE_Q_LITERAL_ENTER -> buffer .append (currentChar );
139139 case ESCAPE_ENTER_STATE -> {
140140 bufferStack .push (buffer );
141141 buffer = new StringBuilder ();
@@ -393,6 +393,7 @@ protected ParserState nextState(char inputChar) throws FBSQLParseException {
393393 protected ParserState nextState (char inputChar ) {
394394 return switch (inputChar ) {
395395 case '\'' -> LITERAL_STATE ;
396+ case '"' -> DELIMITED_IDENTIFIER ;
396397 case '{' -> ESCAPE_ENTER_STATE ;
397398 case '}' -> ESCAPE_EXIT_STATE ;
398399 case '-' -> START_LINE_COMMENT ;
@@ -411,6 +412,15 @@ protected ParserState nextState(char inputChar) {
411412 return (inputChar == '\'' ) ? NORMAL_STATE : LITERAL_STATE ;
412413 }
413414 },
415+ /**
416+ * Dialect 3 delimited identifier or dialect 1 literal text (text inside double quotes).
417+ */
418+ DELIMITED_IDENTIFIER {
419+ @ Override
420+ protected ParserState nextState (char inputChar ) {
421+ return (inputChar == '"' ) ? NORMAL_STATE : DELIMITED_IDENTIFIER ;
422+ }
423+ },
414424 /**
415425 * Start of JDBC escape ({ character encountered).
416426 */
0 commit comments