Skip to content

Commit f609394

Browse files
Feature addtotals and addcoltotals (#4754)
* Feature addtotals and addcoltotals #4754 Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * Update integ-test/src/test/java/org/opensearch/sql/security/CrossClusterSearchIT.java Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Asif Bashar <abashar@apple.com> Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * Update integ-test/src/test/java/org/opensearch/sql/calcite/remote/CalciteAddColTotalsCommandIT.java Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Asif Bashar <abashar@apple.com> Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * Update integ-test/src/test/java/org/opensearch/sql/calcite/remote/CalciteAddColTotalsCommandIT.java Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Asif Bashar <abashar@apple.com> Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * Update integ-test/src/test/java/org/opensearch/sql/calcite/remote/CalciteAddColTotalsCommandIT.java Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Asif Bashar <abashar@apple.com> Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * Update core/src/main/java/org/opensearch/sql/ast/tree/AddColTotals.java Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Asif Bashar <abashar@apple.com> Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * syntax error fix Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * syntax error fix Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * trigger ci workflow Signed-off-by: Asif Bashar <asif.bashar@gmail.com> * remove line wrapping for relavant md files per recommendation Signed-off-by: Asif Bashar <asif.bashar@gmail.com> --------- Signed-off-by: Asif Bashar <asif.bashar@gmail.com> Signed-off-by: Asif Bashar <abashar@apple.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> (cherry picked from commit 15e2411) Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 74dbdb6 commit f609394

25 files changed

Lines changed: 2301 additions & 1 deletion

core/src/main/java/org/opensearch/sql/analysis/Analyzer.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
import org.opensearch.sql.ast.expression.UnresolvedExpression;
5858
import org.opensearch.sql.ast.expression.WindowFunction;
5959
import org.opensearch.sql.ast.tree.AD;
60+
import org.opensearch.sql.ast.tree.AddColTotals;
61+
import org.opensearch.sql.ast.tree.AddTotals;
6062
import org.opensearch.sql.ast.tree.Aggregation;
6163
import org.opensearch.sql.ast.tree.Append;
6264
import org.opensearch.sql.ast.tree.AppendCol;
@@ -522,6 +524,16 @@ public LogicalPlan visitEval(Eval node, AnalysisContext context) {
522524
return new LogicalEval(child, expressionsBuilder.build());
523525
}
524526

527+
@Override
528+
public LogicalPlan visitAddTotals(AddTotals node, AnalysisContext context) {
529+
throw getOnlyForCalciteException("addtotals");
530+
}
531+
532+
@Override
533+
public LogicalPlan visitAddColTotals(AddColTotals node, AnalysisContext context) {
534+
throw getOnlyForCalciteException("addcoltotals");
535+
}
536+
525537
/** Build {@link ParseExpression} to context and skip to child nodes. */
526538
@Override
527539
public LogicalPlan visitParse(Parse node, AnalysisContext context) {

core/src/main/java/org/opensearch/sql/ast/AbstractNodeVisitor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import org.opensearch.sql.ast.statement.Query;
4646
import org.opensearch.sql.ast.statement.Statement;
4747
import org.opensearch.sql.ast.tree.AD;
48+
import org.opensearch.sql.ast.tree.AddColTotals;
49+
import org.opensearch.sql.ast.tree.AddTotals;
4850
import org.opensearch.sql.ast.tree.Aggregation;
4951
import org.opensearch.sql.ast.tree.Append;
5052
import org.opensearch.sql.ast.tree.AppendCol;
@@ -452,4 +454,12 @@ public T visitAppend(Append node, C context) {
452454
public T visitMultisearch(Multisearch node, C context) {
453455
return visitChildren(node, context);
454456
}
457+
458+
public T visitAddTotals(AddTotals node, C context) {
459+
return visitChildren(node, context);
460+
}
461+
462+
public T visitAddColTotals(AddColTotals node, C context) {
463+
return visitChildren(node, context);
464+
}
455465
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.opensearch.sql.ast.tree;
7+
8+
import com.google.common.collect.ImmutableList;
9+
import java.util.List;
10+
import java.util.Map;
11+
import lombok.*;
12+
import org.opensearch.sql.ast.AbstractNodeVisitor;
13+
import org.opensearch.sql.ast.expression.Field;
14+
import org.opensearch.sql.ast.expression.Literal;
15+
16+
/**
17+
* AST node representing the PPL addcoltotals command. Computes column-wise totals across events and
18+
* optionally appends a summary event.
19+
*
20+
* @see AddTotals for row-wise totals
21+
*/
22+
@Getter
23+
@Setter
24+
@ToString
25+
@EqualsAndHashCode(callSuper = false)
26+
@RequiredArgsConstructor
27+
public class AddColTotals extends UnresolvedPlan {
28+
private final List<Field> fieldList;
29+
private final Map<String, Literal> options;
30+
private UnresolvedPlan child;
31+
32+
@Override
33+
public AddColTotals attach(UnresolvedPlan child) {
34+
this.child = child;
35+
return this;
36+
}
37+
38+
@Override
39+
public List<UnresolvedPlan> getChild() {
40+
return child == null ? ImmutableList.of() : ImmutableList.of(child);
41+
}
42+
43+
@Override
44+
public <T, C> T accept(AbstractNodeVisitor<T, C> visitor, C context) {
45+
return visitor.visitAddColTotals(this, context);
46+
}
47+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.opensearch.sql.ast.tree;
7+
8+
import com.google.common.collect.ImmutableList;
9+
import java.util.List;
10+
import java.util.Map;
11+
import lombok.EqualsAndHashCode;
12+
import lombok.Getter;
13+
import lombok.RequiredArgsConstructor;
14+
import lombok.Setter;
15+
import lombok.ToString;
16+
import org.opensearch.sql.ast.AbstractNodeVisitor;
17+
import org.opensearch.sql.ast.expression.Field;
18+
import org.opensearch.sql.ast.expression.Literal;
19+
20+
@Getter
21+
@Setter
22+
@ToString
23+
@EqualsAndHashCode(callSuper = false)
24+
@RequiredArgsConstructor
25+
public class AddTotals extends UnresolvedPlan {
26+
private final List<Field> fieldList;
27+
private final Map<String, Literal> options;
28+
private UnresolvedPlan child;
29+
30+
@Override
31+
public AddTotals attach(UnresolvedPlan child) {
32+
this.child = child;
33+
return this;
34+
}
35+
36+
@Override
37+
public List<UnresolvedPlan> getChild() {
38+
return child == null ? ImmutableList.of() : ImmutableList.of(child);
39+
}
40+
41+
@Override
42+
public <T, C> T accept(AbstractNodeVisitor<T, C> visitor, C context) {
43+
return visitor.visitAddTotals(this, context);
44+
}
45+
}

0 commit comments

Comments
 (0)