Skip to content

Commit fdb09e8

Browse files
authored
Add data anonymizer for spath command (opensearch-project#4479)
Signed-off-by: Tomoyuki Morita <moritato@amazon.com>
1 parent b170cf1 commit fdb09e8

3 files changed

Lines changed: 29 additions & 0 deletions

File tree

core/src/main/java/org/opensearch/sql/ast/tree/SPath.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.List;
1010
import lombok.AllArgsConstructor;
1111
import lombok.EqualsAndHashCode;
12+
import lombok.Getter;
1213
import lombok.RequiredArgsConstructor;
1314
import lombok.ToString;
1415
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -19,6 +20,7 @@
1920
@EqualsAndHashCode(callSuper = false)
2021
@RequiredArgsConstructor
2122
@AllArgsConstructor
23+
@Getter
2224
public class SPath extends UnresolvedPlan {
2325
private UnresolvedPlan child;
2426

ppl/src/main/java/org/opensearch/sql/ppl/utils/PPLQueryDataAnonymizer.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
import org.opensearch.sql.ast.tree.Rename;
8181
import org.opensearch.sql.ast.tree.Reverse;
8282
import org.opensearch.sql.ast.tree.Rex;
83+
import org.opensearch.sql.ast.tree.SPath;
8384
import org.opensearch.sql.ast.tree.Search;
8485
import org.opensearch.sql.ast.tree.Sort;
8586
import org.opensearch.sql.ast.tree.SpanBin;
@@ -681,6 +682,23 @@ public String visitFillNull(FillNull node, String context) {
681682
}
682683
}
683684

685+
@Override
686+
public String visitSpath(SPath node, String context) {
687+
String child = node.getChild().get(0).accept(this, context);
688+
StringBuilder builder = new StringBuilder();
689+
builder.append(child).append(" | spath");
690+
if (node.getInField() != null) {
691+
builder.append(" input=").append(MASK_COLUMN);
692+
}
693+
if (node.getOutField() != null) {
694+
builder.append(" output=").append(MASK_COLUMN);
695+
}
696+
if (node.getPath() != null) {
697+
builder.append(" path=").append(MASK_COLUMN);
698+
}
699+
return builder.toString();
700+
}
701+
684702
@Override
685703
public String visitPatterns(Patterns node, String context) {
686704
String child = node.getChild().get(0).accept(this, context);

ppl/src/test/java/org/opensearch/sql/ppl/utils/PPLQueryDataAnonymizerTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,4 +755,13 @@ public void testSearchWithAbsoluteTimeRange() {
755755
"source=table (@timestamp:*** AND (@timestamp:***",
756756
anonymize("search source=t earliest='2012-12-10 15:00:00' latest=now"));
757757
}
758+
759+
@Test
760+
public void testSpath() {
761+
assertEquals(
762+
"source=table | spath input=identifier output=identifier path=identifier | fields +"
763+
+ " identifier,identifier",
764+
anonymize(
765+
"search source=t | spath input=json_attr output=out path=foo.bar | fields id, out"));
766+
}
758767
}

0 commit comments

Comments
 (0)