Skip to content

Commit 91a565b

Browse files
committed
Missed a children case.
1 parent d281975 commit 91a565b

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

src/main/java/org/nlpcn/es4sql/parse/FieldMaker.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,23 @@ private static MethodField makeMethodField(String name, List<SQLExpr> arguments,
169169
}
170170
else if(methodName.equals("nested") || methodName.equals("reverse_nested")){
171171
NestedType nestedType = new NestedType();
172+
172173
if(!nestedType.tryFillFromExpr(object)){
173174
throw new SqlParseException("failed parsing nested expr " + object);
174175
}
176+
175177
paramers.add(new KVValue("nested",nestedType));
176178
}
177-
else throw new SqlParseException("only support script/nested as inner functions");
179+
else if(methodName.equals("children")) {
180+
ChildrenType childrenType = new ChildrenType();
181+
182+
if(!childrenType.tryFillFromExpr(object)){
183+
throw new SqlParseException("failed parsing children expr " + object);
184+
}
185+
186+
paramers.add(new KVValue("children", childrenType));
187+
}
188+
else throw new SqlParseException("only support script/nested/children as inner functions");
178189
}else {
179190
paramers.add(new KVValue(Util.expr2Object(object)));
180191
}

src/main/java/org/nlpcn/es4sql/parse/SqlParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ else if (methodName.toLowerCase().equals("children")){
293293
ChildrenType childrenType = new ChildrenType();
294294

295295
if(!childrenType.tryFillFromExpr(expr)){
296-
throw new SqlParseException("could not fill nested from expr:" + expr);
296+
throw new SqlParseException("could not fill children from expr:" + expr);
297297
}
298298

299299
Condition condition = new Condition(CONN.valueOf(opear), childrenType.childType, methodName.toUpperCase(), childrenType.where);

src/main/java/org/nlpcn/es4sql/query/AggregationQueryAction.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ public SqlElasticSearchRequestBuilder explain() throws SqlParseException {
8080
else {
8181
childrenBuilder.subAggregation(lastAgg);
8282
}
83-
request.addAggregation(wrapNestedIfNeeded(childrenBuilder, field.isChildren()));
83+
84+
request.addAggregation(childrenBuilder);
8485
}
8586
else {
8687
request.addAggregation(lastAgg);
@@ -95,15 +96,28 @@ public SqlElasticSearchRequestBuilder explain() throws SqlParseException {
9596

9697
if(field.isNested()){
9798
AggregationBuilder nestedBuilder = createNestedAggregation(field);
98-
if(insertFilterIfExistsAfter(subAgg, groupBy, nestedBuilder,i+1)){
99-
groupBy.remove(i+1);
99+
100+
if(insertFilterIfExistsAfter(subAgg, groupBy, nestedBuilder,i + 1)){
101+
groupBy.remove(i + 1);
100102
i++;
101103
}
102104
else {
103105
nestedBuilder.subAggregation(subAgg);
104106
}
107+
105108
lastAgg.subAggregation(wrapNestedIfNeeded(nestedBuilder,field.isReverseNested()));
109+
} else if(field.isChildren()) {
110+
AggregationBuilder childrenBuilder = createChildrenAggregation(field);
111+
112+
if(insertFilterIfExistsAfter(subAgg, groupBy, childrenBuilder, i + 1)){
113+
groupBy.remove(i + 1);
114+
i++;
115+
}
116+
else {
117+
childrenBuilder.subAggregation(subAgg);
118+
}
106119

120+
lastAgg.subAggregation(childrenBuilder);
107121
}
108122
else {
109123
lastAgg.subAggregation(subAgg);

0 commit comments

Comments
 (0)