Skip to content

Commit 1327dc8

Browse files
Add analyze rpc endpoint; realize it's a query and refactor
1 parent 7b77360 commit 1327dc8

File tree

2 files changed

+96
-100
lines changed

2 files changed

+96
-100
lines changed

proto/analyze.proto

Lines changed: 93 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -8,122 +8,115 @@ import "proto/conjunction.proto";
88

99
package typedb.protocol;
1010

11-
message Analyze {
11+
message AnalyzedQuery {
12+
PipelineStructure query = 1;
13+
repeated FunctionStructure preamble = 2;
1214

13-
message Req {
14-
string query = 1;
15+
message FunctionStructure {
16+
PipelineStructure body = 1;
17+
repeated uint32 arguments = 2;
18+
oneof returns {// TODO: Does this need to be flattened up?
19+
ReturnOpStream stream = 3;
20+
ReturnOpSingle single = 4;
21+
ReturnOpCheck check = 5;
22+
ReturnOpReduce reduce = 6;
23+
};
24+
25+
message ReturnOpStream {
26+
repeated uint32 variables = 1;
27+
}
28+
message ReturnOpSingle {
29+
string selector = 1;
30+
repeated uint32 variables = 2;
31+
}
32+
message ReturnOpCheck {}
33+
message ReturnOpReduce {
34+
repeated Reducer reducer = 1;
35+
}
1536
}
1637

17-
message Res {
18-
PipelineStructure query = 1;
19-
repeated FunctionStructure preamble = 2;
38+
message PipelineStructure {
39+
repeated ConjunctionStructure conjunctions = 1;
40+
repeated PipelineStage stages = 2;
41+
map<uint32, VariableInfo> variable_info = 3;
42+
repeated uint32 outputs = 4;
2043

21-
message FunctionStructure {
22-
PipelineStructure body = 1;
23-
repeated uint32 arguments = 2;
24-
oneof returns {// TODO: Does this need to be flattened up?
25-
ReturnOpStream stream = 3;
26-
ReturnOpSingle single = 4;
27-
ReturnOpCheck check = 5;
28-
ReturnOpReduce reduce = 6;
29-
};
44+
message VariableInfo {
45+
string name = 1;
46+
}
3047

31-
message ReturnOpStream {
32-
repeated uint32 variables = 1;
48+
message PipelineStage {
49+
oneof stage {
50+
Match match = 1;
51+
Insert insert = 2;
52+
Put put = 3;
53+
Update update = 4;
54+
Delete delete = 5;
55+
Select select = 6;
56+
Sort sort = 7;
57+
Require require = 8;
58+
Offset offset = 9;
59+
Limit limit = 10;
60+
Distinct distinct = 11;
61+
Reduce reduce = 12;
3362
}
34-
message ReturnOpSingle {
35-
string selector = 1;
36-
repeated uint32 variables = 2;
63+
64+
// They're all the same structure. Should we just use one?
65+
message Match {
66+
uint32 block = 1;
3767
}
38-
message ReturnOpCheck {}
39-
message ReturnOpReduce {
40-
repeated Reducer reducer = 1;
68+
message Insert {
69+
uint32 block = 1;
4170
}
42-
}
43-
44-
message PipelineStructure {
45-
repeated ConjunctionStructure conjunctions = 1;
46-
repeated PipelineStage stages = 2;
47-
map<uint32, VariableInfo> variable_info = 3;
48-
repeated uint32 outputs = 4;
49-
50-
message VariableInfo {
51-
string name = 1;
71+
message Put {
72+
uint32 block = 1;
73+
}
74+
message Update {
75+
uint32 block = 1;
76+
}
77+
message Delete {
78+
uint32 block = 1;
79+
repeated uint32 deleted_variables = 2;
5280
}
5381

54-
message PipelineStage {
55-
oneof stage {
56-
Match match = 1;
57-
Insert insert = 2;
58-
Put put = 3;
59-
Update update = 4;
60-
Delete delete = 5;
61-
Select select = 6;
62-
Sort sort = 7;
63-
Require require = 8;
64-
Offset offset = 9;
65-
Limit limit = 10;
66-
Distinct distinct = 11;
67-
Reduce reduce = 12;
68-
}
69-
70-
// They're all the same structure. Should we just use one?
71-
message Match {
72-
uint32 block = 1;
73-
}
74-
message Insert {
75-
uint32 block = 1;
76-
}
77-
message Put {
78-
uint32 block = 1;
79-
}
80-
message Update {
81-
uint32 block = 1;
82-
}
83-
message Delete {
84-
uint32 block = 1;
85-
repeated uint32 deleted_variables = 2;
86-
}
87-
88-
message Select {
89-
repeated uint32 variables = 1;
90-
}
91-
message Sort {
92-
repeated SortVariable sort_variables = 1;
93-
message SortVariable {
94-
uint32 variable = 1;
95-
SortDirection direction = 2;
96-
enum SortDirection {
97-
ASC = 0;
98-
DESC = 1;
99-
}
82+
message Select {
83+
repeated uint32 variables = 1;
84+
}
85+
message Sort {
86+
repeated SortVariable sort_variables = 1;
87+
message SortVariable {
88+
uint32 variable = 1;
89+
SortDirection direction = 2;
90+
enum SortDirection {
91+
ASC = 0;
92+
DESC = 1;
10093
}
10194
}
102-
message Require {
103-
repeated uint32 variables = 1;
104-
}
105-
message Offset {
106-
uint64 offset = 1;
107-
}
108-
message Limit {
109-
uint64 limit = 1;
110-
}
111-
message Distinct {}
112-
message Reduce {
113-
repeated ReduceAssign reducers = 1;
114-
repeated uint32 groupby = 2;
95+
}
96+
message Require {
97+
repeated uint32 variables = 1;
98+
}
99+
message Offset {
100+
uint64 offset = 1;
101+
}
102+
message Limit {
103+
uint64 limit = 1;
104+
}
105+
message Distinct {}
106+
message Reduce {
107+
repeated ReduceAssign reducers = 1;
108+
repeated uint32 groupby = 2;
115109

116-
message ReduceAssign {
117-
uint32 assigned = 1;
118-
Reducer reducer = 2;
119-
}
110+
message ReduceAssign {
111+
uint32 assigned = 1;
112+
Reducer reducer = 2;
120113
}
121114
}
122115
}
116+
}
123117

124-
message Reducer {
125-
string reducer = 1;
126-
repeated uint32 variables = 2;
127-
}
118+
message Reducer {
119+
string reducer = 1;
120+
repeated uint32 variables = 2;
128121
}
129122
}

proto/query.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ syntax = "proto3";
77
import "proto/answer.proto";
88
import "proto/options.proto";
99
import "proto/error.proto";
10+
import "proto/analyze.proto";
1011

1112
package typedb.protocol;
1213

@@ -16,6 +17,7 @@ message Query {
1617
READ = 0;
1718
WRITE = 1;
1819
SCHEMA = 2;
20+
ANALYZE = 3;
1921
}
2022

2123
message Req {
@@ -34,6 +36,7 @@ message Query {
3436
Done done = 1;
3537
ConceptDocumentStream concept_document_stream = 3;
3638
ConceptRowStream concept_row_stream = 4;
39+
AnalyzedQuery analyzed = 5;
3740
}
3841

3942
message Done {

0 commit comments

Comments
 (0)