Skip to content

SQL: "EXPLAIN" does not resolve recursively #1488

@gramian

Description

@gramian

ArcadeDB Version:

ArcadeDB Server v24.1.1 (build 839d61f47c0eb80f5e56b0103c2686c85a572699/1709219005894/main)

OS and JDK Version:

Running on Mac OS X 12.7 - OpenJDK 64-Bit Server VM 17.0.9 (Homebrew)

Expected behavior

When using EXPLAIN with (at least some) subqueries, the subquery is just returned in the execution plan and not explained.

+ CHECK USERTYPE HIERARCHY (E) + LET (once) $__ARCADEDB_CREATE_EDGE_fromV = $a
+ LET (once) $__ARCADEDB_CREATE_EDGE_toV =
(+ FETCH FROM TYPE vec
 + FETCH FROM BUCKET 25 (vec_0) ASC = 0 RECORDS
 + FETCH FROM BUCKET 28 (vec_1) ASC = 0 RECORDS
 + FETCH FROM BUCKET 31 (vec_2) ASC = 0 RECORDS
 + FETCH FROM BUCKET 34 (vec_3) ASC = 0 RECORDS
 + FETCH FROM BUCKET 37 (vec_4) ASC = 0 RECORDS
 + FETCH FROM BUCKET 40 (vec_5) ASC = 0 RECORDS
 + FETCH FROM BUCKET 43 (vec_6) ASC = 0 RECORDS
 + FETCH FROM BUCKET 46 (vec_7) ASC = 0 RECORDS
 + FILTER ITEMS WHERE x = 1)
+ FOR EACH x in $__ARCADEDB_CREATE_EDGE_fromV FOR EACH y in $__ARCADEDB_CREATE_EDGE_toV CREATE EDGE vec FROM x TO y BIDIRECTIONAL
+ SAVE RECORD

This is a little hard to parse but I took the actual behavior and placed inside the subquery parentheses the result of the subquery explanation EXPLAIN SELECT FROM vec WHERE x = 1.

Actual behavior

+ CHECK USERTYPE HIERARCHY (E)
+ LET (once) $__ARCADEDB_CREATE_EDGE_fromV = $a
+ LET (once) $__ARCADEDB_CREATE_EDGE_toV = (SELECT FROM vec WHERE x = 1)
+ FOR EACH x in $__ARCADEDB_CREATE_EDGE_fromV FOR EACH y in $__ARCADEDB_CREATE_EDGE_toV CREATE EDGE vec FROM x TO y BIDIRECTIONAL
+ SAVE RECORD

Steps to reproduce

EXPLAIN CREATE EDGE vec FROM $a TO (SELECT FROM vec WHERE x = 1)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions