|
|
@ -1,69 +1,3 @@
|
|
|
|
# Structure of the project
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Parser
|
|
|
|
|
|
|
|
* Query AST
|
|
|
|
|
|
|
|
* Typing support
|
|
|
|
|
|
|
|
* Logical plan/optimizers
|
|
|
|
|
|
|
|
* Physical plan/optimizers
|
|
|
|
|
|
|
|
* Runtime representation (values)
|
|
|
|
|
|
|
|
* DB interaction/(de)serialization
|
|
|
|
|
|
|
|
* Evaluator/interpreter/VM
|
|
|
|
|
|
|
|
* Plan executors
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
*id: id,
|
|
|
|
|
|
|
|
name: d.name[0]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
$name
|
|
|
|
|
|
|
|
${name:?Int}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
where a: b.id == c.id
|
|
|
|
|
|
|
|
trail
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
select ...
|
|
|
|
|
|
|
|
view X = select {} : Vertex
|
|
|
|
|
|
|
|
let z = select {} : Vertex
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
from(e:Employee)
|
|
|
|
|
|
|
|
.where(e.id > 10)
|
|
|
|
|
|
|
|
.select(x: {id: e.id, name: e.first_name ++ e.last_name})
|
|
|
|
|
|
|
|
.skip(10)
|
|
|
|
|
|
|
|
.take(20);
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
from(e:Employee-[hj:HasJob]->j:Job)
|
|
|
|
|
|
|
|
.where(e.id == 20)
|
|
|
|
|
|
|
|
.select({..j});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
query DoThis(x:Int, y:Any) {
|
|
|
|
|
|
|
|
return select(-[v:V]->)
|
|
|
|
|
|
|
|
.where(v.id >= x, v.data == y);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
query DoThat(r:Rel(*id: Int)) {
|
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
global query XXX() {
|
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Operations on relations
|
|
|
|
# Operations on relations
|
|
|
|
|
|
|
|
|
|
|
|
Operations
|
|
|
|
Operations
|
|
|
|