-
Notifications
You must be signed in to change notification settings - Fork 0
/
arch.txt
61 lines (58 loc) · 1.49 KB
/
arch.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
1. Declaration initializer
User declaration -> Usable meta information structure
7. + Record
2. Transaction storage
3. Tasks loop
while(@tasks) {
select task via plugin
run task & get from it next tasks
}
return result of first task
4. Task base class ->run:
return self & fetch task if no record in trx storage
5. Fetch task ->run:
base run
return record from trx storage
6. Update task ->run:
record ->update
create calc task for each depend field in record who affected this update
create m13n task for each link from any table to affected field or using affected field in matches
7. Materialization (m13n) task ->run:
return self & fetch task if no linker record in trx storage
get value from linked record and gen update task about set this value on self record
Match ([a=b,c=d])
Все поля отсортированы на этапе декларации структуры или получения запроса снаружи
Хеш, т.к. поля уникальны
table
name
fields
name
restrictions: datatype, vals,..
fieldtype:
user data
expression
used fields
link (materializable)
ext_table
ext_field
match conds
ext_field
op
int_field
selections
fields to select
match conds
field
op
value
order fields
computed table
agregat
source table
filter conds
fields (can use expressions with agregat functions)
group fields
union
source tables
fields
join ...