Skip to content

SQL: (unmatching) quote escaping #1039

@gramian

Description

@gramian

ArcadeDB Server v23.3.1 (build da609e4/1680693032550/main)

Running on Mac OS X 12.6.4 - OpenJDK 64-Bit Server VM Homebrew

Escaping double quotes in a single-quote string, or escaping single quotes in a double-quotes string produces an error.

Expected behavior

Either this yields the respective unescaped or escaped strings as it either has or hasn't special meaning, but raising an error seems inadequate, or am I overlooking a corner case?

Actual behavior

Lexical error at line 1, column 10. Encountered: " '" (39), after : " " "
Error on command execution (PostCommandHandler)
com.arcadedb.exception.CommandSQLParsingException: SELECT "\'" limit 25
	at com.arcadedb.query.sql.parser.StatementCache.throwParsingException(StatementCache.java:130)
	at com.arcadedb.query.sql.parser.StatementCache.parse(StatementCache.java:118)
	at com.arcadedb.query.sql.parser.StatementCache.get(StatementCache.java:70)
	at com.arcadedb.query.sql.SQLQueryEngine.parse(SQLQueryEngine.java:202)
	at com.arcadedb.query.sql.SQLQueryEngine.command(SQLQueryEngine.java:95)
	at com.arcadedb.database.EmbeddedDatabase.command(EmbeddedDatabase.java:1264)
	at com.arcadedb.server.ServerDatabase.command(ServerDatabase.java:421)
	at com.arcadedb.server.http.handler.PostCommandHandler.executeCommand(PostCommandHandler.java:127)
	at com.arcadedb.server.http.handler.PostCommandHandler.execute(PostCommandHandler.java:88)
	at com.arcadedb.server.http.handler.DatabaseAbstractHandler.execute(DatabaseAbstractHandler.java:92)
	at com.arcadedb.server.http.handler.AbstractHandler.handleRequest(AbstractHandler.java:127)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
	at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.arcadedb.query.sql.parser.TokenMgrError: Lexical error at line 1, column 10.  Encountered: "\'" (39), after : "\"\\"
	at com.arcadedb.query.sql.parser.SqlParserTokenManager.getNextToken(SqlParserTokenManager.java:5758)
	at com.arcadedb.query.sql.parser.SqlParser.jj_scan_token(SqlParser.java:26804)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_ProjectionItem_1775_4_313(SqlParser.java:25587)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_ProjectionItem_1775_3_141(SqlParser.java:25595)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_Projection_1758_5_516(SqlParser.java:25652)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_Projection_1757_3_416(SqlParser.java:25665)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_SelectStatement_1143_7_282(SqlParser.java:20415)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_SelectStatement_1141_3_128(SqlParser.java:20454)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_QueryStatement_1106_5_354(SqlParser.java:20705)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_QueryStatement_1105_3_172(SqlParser.java:20731)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3R_StatementInternal_974_9_96(SqlParser.java:21596)
	at com.arcadedb.query.sql.parser.SqlParser.jj_3_35(SqlParser.java:21636)
	at com.arcadedb.query.sql.parser.SqlParser.jj_2_35(SqlParser.java:17519)
	at com.arcadedb.query.sql.parser.SqlParser.StatementInternal(SqlParser.java:1263)
	at com.arcadedb.query.sql.parser.SqlParser.Statement(SqlParser.java:1038)
	at com.arcadedb.query.sql.parser.SqlParser.Parse(SqlParser.java:244)
	at com.arcadedb.query.sql.parser.StatementCache.parse(StatementCache.java:111)
	... 16 more

Steps to reproduce

SELECT "\""; -- works
SELECT '\''; -- works
SELECT "\'"; -- errors
SELECT '\"'; -- errors

Metadata

Metadata

Assignees

Labels

wontfixThis will not be worked on

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions