Skip to content

Commit aa74bfd

Browse files
committed
automatic fork branch ids start at 1
1 parent f380d37 commit aa74bfd

File tree

3 files changed

+72
-72
lines changed
  • x-pack/plugin/esql

3 files changed

+72
-72
lines changed

x-pack/plugin/esql/qa/testFixtures/src/main/resources/fork.csv-spec

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ from employees
1313
;
1414

1515
emp_no:integer | _fork:keyword
16-
10001 | fork0
17-
10002 | fork1
16+
10001 | fork1
17+
10002 | fork2
1818
;
1919

2020
forkWithWhereSortAndLimit
@@ -28,11 +28,11 @@ from employees
2828
;
2929

3030
emp_no:integer | first_name:keyword | _fork:keyword
31-
10002 | Bezalel | fork1
32-
10009 | Sumant | fork0
33-
10014 | Berni | fork1
34-
10048 | Florian | fork0
35-
10058 | Berhard | fork1
36-
10060 | Breannda | fork1
37-
10094 | Arumugam | fork1
31+
10002 | Bezalel | fork2
32+
10009 | Sumant | fork1
33+
10014 | Berni | fork2
34+
10048 | Florian | fork1
35+
10058 | Berhard | fork2
36+
10060 | Breannda | fork2
37+
10094 | Arumugam | fork2
3838
;

x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ForkIT.java

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ public void testSimple() {
4444
assertColumnNames(resp.columns(), List.of("id", "_fork", "content"));
4545
assertColumnTypes(resp.columns(), List.of("integer", "keyword", "text"));
4646
Iterable<Iterable<Object>> expectedValues = List.of(
47-
List.of(3, "fork1", "This dog is really brown"),
48-
List.of(4, "fork1", "The dog is brown but this document is very very long"),
49-
List.of(6, "fork0", "The quick brown fox jumps over the lazy dog"),
50-
List.of(6, "fork1", "The quick brown fox jumps over the lazy dog")
47+
List.of(3, "fork2", "This dog is really brown"),
48+
List.of(4, "fork2", "The dog is brown but this document is very very long"),
49+
List.of(6, "fork1", "The quick brown fox jumps over the lazy dog"),
50+
List.of(6, "fork2", "The quick brown fox jumps over the lazy dog")
5151
);
5252
assertValues(resp.values(), expectedValues);
5353
}
@@ -67,11 +67,11 @@ public void testSortAndLimitInFirstSubQuery() {
6767
assertColumnNames(resp.columns(), List.of("id", "_fork", "content"));
6868
assertColumnTypes(resp.columns(), List.of("integer", "keyword", "text"));
6969
Iterable<Iterable<Object>> expectedValues = List.of(
70-
List.of(2, "fork1", "This is a brown dog"),
71-
List.of(3, "fork1", "This dog is really brown"),
72-
List.of(4, "fork1", "The dog is brown but this document is very very long"),
73-
List.of(6, "fork0", "The quick brown fox jumps over the lazy dog"),
74-
List.of(6, "fork1", "The quick brown fox jumps over the lazy dog")
70+
List.of(2, "fork2", "This is a brown dog"),
71+
List.of(3, "fork2", "This dog is really brown"),
72+
List.of(4, "fork2", "The dog is brown but this document is very very long"),
73+
List.of(6, "fork1", "The quick brown fox jumps over the lazy dog"),
74+
List.of(6, "fork2", "The quick brown fox jumps over the lazy dog")
7575
);
7676
assertValues(resp.values(), expectedValues);
7777
}
@@ -91,11 +91,11 @@ public void testSortAndLimitInFirstSubQueryASC() {
9191
assertColumnNames(resp.columns(), List.of("id", "_fork", "content"));
9292
assertColumnTypes(resp.columns(), List.of("integer", "keyword", "text"));
9393
Iterable<Iterable<Object>> expectedValues = List.of(
94-
List.of(1, "fork0", "This is a brown fox"),
95-
List.of(2, "fork1", "This is a brown dog"),
96-
List.of(3, "fork1", "This dog is really brown"),
97-
List.of(4, "fork1", "The dog is brown but this document is very very long"),
98-
List.of(6, "fork1", "The quick brown fox jumps over the lazy dog")
94+
List.of(1, "fork1", "This is a brown fox"),
95+
List.of(2, "fork2", "This is a brown dog"),
96+
List.of(3, "fork2", "This dog is really brown"),
97+
List.of(4, "fork2", "The dog is brown but this document is very very long"),
98+
List.of(6, "fork2", "The quick brown fox jumps over the lazy dog")
9999
);
100100
assertValues(resp.values(), expectedValues);
101101
}
@@ -115,9 +115,9 @@ public void testSortAndLimitInSecondSubQuery() {
115115
assertColumnNames(resp.columns(), List.of("_fork", "id", "content"));
116116
assertColumnTypes(resp.columns(), List.of("keyword", "integer", "text"));
117117
Iterable<Iterable<Object>> expectedValues = List.of(
118-
List.of("fork0", 6, "The quick brown fox jumps over the lazy dog"),
119-
List.of("fork1", 4, "The dog is brown but this document is very very long"),
120-
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog")
118+
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog"),
119+
List.of("fork2", 4, "The dog is brown but this document is very very long"),
120+
List.of("fork2", 6, "The quick brown fox jumps over the lazy dog")
121121
);
122122
assertValues(resp.values(), expectedValues);
123123
}
@@ -137,8 +137,8 @@ public void testSortAndLimitInBothSubQueries() {
137137
assertColumnNames(resp.columns(), List.of("id", "_fork", "content"));
138138
assertColumnTypes(resp.columns(), List.of("integer", "keyword", "text"));
139139
Iterable<Iterable<Object>> expectedValues = List.of(
140-
List.of(1, "fork0", "This is a brown fox"),
141-
List.of(2, "fork1", "This is a brown dog")
140+
List.of(1, "fork1", "This is a brown fox"),
141+
List.of(2, "fork2", "This is a brown dog")
142142
);
143143
assertValues(resp.values(), expectedValues);
144144
}
@@ -157,10 +157,10 @@ public void testWhereWhere() {
157157
assertColumnNames(resp.columns(), List.of("_fork", "id", "content"));
158158
assertColumnTypes(resp.columns(), List.of("keyword", "integer", "text"));
159159
Iterable<Iterable<Object>> expectedValues = List.of(
160-
List.of("fork0", 1, "This is a brown fox"),
161-
List.of("fork1", 3, "This dog is really brown"),
162-
List.of("fork1", 4, "The dog is brown but this document is very very long"),
163-
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog")
160+
List.of("fork1", 1, "This is a brown fox"),
161+
List.of("fork2", 3, "This dog is really brown"),
162+
List.of("fork2", 4, "The dog is brown but this document is very very long"),
163+
List.of("fork2", 6, "The quick brown fox jumps over the lazy dog")
164164
);
165165
assertValues(resp.values(), expectedValues);
166166
}
@@ -179,12 +179,12 @@ public void testWhereSort() {
179179
assertColumnNames(resp.columns(), List.of("_fork", "id", "content"));
180180
assertColumnTypes(resp.columns(), List.of("keyword", "integer", "text"));
181181
Iterable<Iterable<Object>> expectedValues = List.of(
182-
List.of("fork0", 1, "This is a brown fox"),
183-
List.of("fork0", 6, "The quick brown fox jumps over the lazy dog"),
184-
List.of("fork1", 2, "This is a brown dog"),
185-
List.of("fork1", 3, "This dog is really brown"),
186-
List.of("fork1", 4, "The dog is brown but this document is very very long"),
187-
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog")
182+
List.of("fork1", 1, "This is a brown fox"),
183+
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog"),
184+
List.of("fork2", 2, "This is a brown dog"),
185+
List.of("fork2", 3, "This dog is really brown"),
186+
List.of("fork2", 4, "The dog is brown but this document is very very long"),
187+
List.of("fork2", 6, "The quick brown fox jumps over the lazy dog")
188188
);
189189
assertValues(resp.values(), expectedValues);
190190
}
@@ -202,12 +202,12 @@ public void testWhereSortOnlyInFork() {
202202
assertColumnNames(resp.columns(), List.of("_fork", "id", "content"));
203203
assertColumnTypes(resp.columns(), List.of("keyword", "integer", "text"));
204204
Iterable<Iterable<Object>> expectedValues = List.of(
205-
List.of("fork0", 1, "This is a brown fox"),
206-
List.of("fork0", 6, "The quick brown fox jumps over the lazy dog"),
207-
List.of("fork1", 2, "This is a brown dog"),
208-
List.of("fork1", 3, "This dog is really brown"),
209-
List.of("fork1", 4, "The dog is brown but this document is very very long"),
210-
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog")
205+
List.of("fork1", 1, "This is a brown fox"),
206+
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog"),
207+
List.of("fork2", 2, "This is a brown dog"),
208+
List.of("fork2", 3, "This dog is really brown"),
209+
List.of("fork2", 4, "The dog is brown but this document is very very long"),
210+
List.of("fork2", 6, "The quick brown fox jumps over the lazy dog")
211211
);
212212
assertValues(resp.values(), expectedValues);
213213
}
@@ -226,11 +226,11 @@ public void testLimitOnlyInSecondSubQuery() {
226226
assertColumnNames(resp.columns(), List.of("_fork", "id", "content"));
227227
assertColumnTypes(resp.columns(), List.of("keyword", "integer", "text"));
228228
Iterable<Iterable<Object>> expectedValues = List.of(
229-
List.of("fork0", 1, "This is a brown fox"),
230-
List.of("fork0", 6, "The quick brown fox jumps over the lazy dog"),
231229
List.of("fork1", 1, "This is a brown fox"),
232-
List.of("fork1", 2, "This is a brown dog"),
233-
List.of("fork1", 3, "This dog is really brown")
230+
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog"),
231+
List.of("fork2", 1, "This is a brown fox"),
232+
List.of("fork2", 2, "This is a brown dog"),
233+
List.of("fork2", 3, "This dog is really brown")
234234
);
235235
assertValues(resp.values(), expectedValues);
236236
}
@@ -286,11 +286,11 @@ public void testThreeSubQueries() {
286286
assertColumnNames(resp.columns(), List.of("_fork", "id", "content"));
287287
assertColumnTypes(resp.columns(), List.of("keyword", "integer", "text"));
288288
Iterable<Iterable<Object>> expectedValues = List.of(
289-
List.of("fork0", 6, "The quick brown fox jumps over the lazy dog"),
290-
List.of("fork1", 3, "This dog is really brown"),
291-
List.of("fork1", 4, "The dog is brown but this document is very very long"),
292289
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog"),
293-
List.of("fork2", 5, "There is also a white cat")
290+
List.of("fork2", 3, "This dog is really brown"),
291+
List.of("fork2", 4, "The dog is brown but this document is very very long"),
292+
List.of("fork2", 6, "The quick brown fox jumps over the lazy dog"),
293+
List.of("fork3", 5, "There is also a white cat")
294294
);
295295
assertValues(resp.values(), expectedValues);
296296
}
@@ -312,11 +312,11 @@ public void testFiveSubQueries() {
312312
assertColumnNames(resp.columns(), List.of("_fork", "id", "content"));
313313
assertColumnTypes(resp.columns(), List.of("keyword", "integer", "text"));
314314
Iterable<Iterable<Object>> expectedValues = List.of(
315-
List.of("fork0", 6, "The quick brown fox jumps over the lazy dog"),
316-
List.of("fork1", 2, "This is a brown dog"),
317-
List.of("fork2", 5, "There is also a white cat"),
318-
List.of("fork3", 1, "This is a brown fox"),
319-
List.of("fork4", 3, "This dog is really brown")
315+
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog"),
316+
List.of("fork2", 2, "This is a brown dog"),
317+
List.of("fork3", 5, "There is also a white cat"),
318+
List.of("fork4", 1, "This is a brown fox"),
319+
List.of("fork5", 3, "This dog is really brown")
320320
);
321321
assertValues(resp.values(), expectedValues);
322322
}
@@ -338,27 +338,27 @@ public void testFourSubQueriesWithSortAndLimit() {
338338
assertColumnNames(resp.columns(), List.of("_fork", "id", "content"));
339339
assertColumnTypes(resp.columns(), List.of("keyword", "integer", "text"));
340340
Iterable<Iterable<Object>> fork0 = List.of(
341-
List.of("fork0", 6, "The quick brown fox jumps over the lazy dog"),
342-
List.of("fork0", 5, "There is also a white cat")
341+
List.of("fork1", 6, "The quick brown fox jumps over the lazy dog"),
342+
List.of("fork1", 5, "There is also a white cat")
343343
);
344344
Iterable<Iterable<Object>> fork1 = List.of(
345-
List.of("fork1", 2, "This is a brown dog"),
346-
List.of("fork1", 3, "This dog is really brown"),
347-
List.of("fork1", 4, "The dog is brown but this document is very very long")
345+
List.of("fork2", 2, "This is a brown dog"),
346+
List.of("fork2", 3, "This dog is really brown"),
347+
List.of("fork2", 4, "The dog is brown but this document is very very long")
348348
);
349349
Iterable<Iterable<Object>> fork2 = List.of(
350-
List.of("fork2", 2, "This is a brown dog"),
351-
List.of("fork2", 1, "This is a brown fox")
350+
List.of("fork3", 2, "This is a brown dog"),
351+
List.of("fork3", 1, "This is a brown fox")
352352
);
353353
Iterable<Iterable<Object>> fork3 = List.of(
354-
List.of("fork3", 3, "This dog is really brown"),
355-
List.of("fork3", 4, "The dog is brown but this document is very very long"),
356-
List.of("fork3", 5, "There is also a white cat")
354+
List.of("fork4", 3, "This dog is really brown"),
355+
List.of("fork4", 4, "The dog is brown but this document is very very long"),
356+
List.of("fork4", 5, "There is also a white cat")
357357
);
358-
assertValues(valuesFilter(resp.values(), row -> row.next().equals("fork0")), fork0);
359-
assertValues(valuesFilter(resp.values(), row -> row.next().equals("fork1")), fork1);
360-
assertValues(valuesFilter(resp.values(), row -> row.next().equals("fork2")), fork2);
361-
assertValues(valuesFilter(resp.values(), row -> row.next().equals("fork3")), fork3);
358+
assertValues(valuesFilter(resp.values(), row -> row.next().equals("fork1")), fork0);
359+
assertValues(valuesFilter(resp.values(), row -> row.next().equals("fork2")), fork1);
360+
assertValues(valuesFilter(resp.values(), row -> row.next().equals("fork3")), fork2);
361+
assertValues(valuesFilter(resp.values(), row -> row.next().equals("fork4")), fork3);
362362
assertThat(getValuesList(resp.values()).size(), equalTo(10));
363363
}
364364
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/analysis/Analyzer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public LogicalPlan analyze(LogicalPlan plan) {
187187
List<LogicalPlan> analyzedPlans = new ArrayList<>();
188188

189189
LogicalPlan forkAnalyzed = plan.transformDown(Fork.class, fr -> {
190-
int count = 0;
190+
int count = 1; // automatic fork branch ids start at 1
191191
for (var subPlan : fr.subPlans()) {
192192
LogicalPlan subPlanCopy = subPlan.transformUp(
193193
LogicalPlan.class,

0 commit comments

Comments
 (0)