EQL Internals - fieldenms/tg GitHub Wiki
Modifying / Extending EQL
Refer to the javadoc of package ua.com.fielden.platform.eql
in platform-dao
.
Transformation of EQL expressions
EQL expression (fluent interface)
|
| tokenisation
|
v
Abstract Model (tokens)
|
| stage 0
|
v
Abstract Query 1 (AST level 1)
|
| stage 1
|
v
Abstract Query 2 (AST level 2)
|
| stage 2
|
v
Abstract Query 3 (AST level 3)
|
| stage 3
|
v
Transformation result (SQL + information to interpret results)
A fluent interface (EQL progressive interfaces) is currently used to write EQL expressions. The tokenisation stage has the disadvantage of losing some context-sensitive information in the process (TODO need examples). Also, the logic encoding the rules of the language (i.e., its grammar) needs to be synchronised between "tokenisation" and "stage 0" processes. This could be improved by merging these processes into a single one, which would be performed by the implementation of the fluent interface.
Yielding in entity queries
An entity query with a single yield which is either unaliased or targets property id
is equivalent
to an entity query that selects all entities of that type whose id
is contained[^1] in the yielded
value.
[^1]: if the yielded value is a scalar, equality is used; in case of a set, membership test is used.