Skip to content

SQL: Field access for sub-query in projection #883

@gramian

Description

@gramian

ArcadeDB Version: v23.1.2 (build 9dbe3ce/1675373316135/main)

JDK Version: openjdk 11.0.18 2023-01-17

OS: MacOS 12.6

Accessing a field from a sub-query in a projection, like:

SELECT (SELECT name FROM doc).name;

produces an error, while when wrapping the error in a function it works (see below).

Expected behavior

["test"]

Actual behavior

Cannot execute command Encountered " <SELECT> "SELECT "" at line 1, column 1.
Was expecting one of: <WHILE> ... <IF> ... <FOREACH> ... ";" ...
Details
Error on command execution (PostCommandHandler)
com.arcadedb.exception.CommandSQLParsingException: com.arcadedb.query.sql.parser.ParseException: Encountered " <SELECT> "SELECT "" at line 1, column 1.
Was expecting one of:
    <WHILE> ...
    <IF> ...
    <FOREACH> ...
    ";" ...
    
	at com.arcadedb.query.sql.SQLQueryEngine.parseScript(SQLQueryEngine.java:220)
	at com.arcadedb.query.sql.SQLQueryEngine.parseScript(SQLQueryEngine.java:212)
	at com.arcadedb.database.EmbeddedDatabase.execute(EmbeddedDatabase.java:1264)
	at com.arcadedb.server.ServerDatabase.execute(ServerDatabase.java:421)
	at com.arcadedb.server.http.handler.PostCommandHandler.executeScript(PostCommandHandler.java:118)
	at com.arcadedb.server.http.handler.PostCommandHandler.execute(PostCommandHandler.java:87)
	at com.arcadedb.server.http.handler.DatabaseAbstractHandler.execute(DatabaseAbstractHandler.java:91)
	at com.arcadedb.server.http.handler.AbstractHandler.handleRequest(AbstractHandler.java:128)
	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.ParseException: Encountered " <SELECT> "SELECT "" at line 1, column 1.
Was expecting one of:
    <WHILE> ...
    <IF> ...
    <FOREACH> ...
    ";" ...
    
	at com.arcadedb.query.sql.parser.SqlParser.generateParseException(SqlParser.java:26917)
	at com.arcadedb.query.sql.parser.SqlParser.jj_consume_token(SqlParser.java:26762)
	at com.arcadedb.query.sql.parser.SqlParser.ParseScript(SqlParser.java:467)
	at com.arcadedb.query.sql.SQLQueryEngine.parseScript(SQLQueryEngine.java:218)
	... 14 more

Steps to reproduce

CREATE DOCUMENT TYPE doc;
CREATE PROPERTY doc.name STRING;
INSERT INTO doc SET name = 'test';

SELECT (SELECT name FROM doc).name;

Note: The following variants work as expected:

SELECT coalesce((SELECT name FROM doc)).name;
SELECT $temp.name LET $temp = (SELECT name FROM doc);

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions