From 8559e1c8a35dc3720e1929ac66f6f71476a7110e Mon Sep 17 00:00:00 2001 From: Norman Jordan Date: Wed, 4 Dec 2024 09:40:20 -0800 Subject: [PATCH] Simplified the grammar for FILLNULL Signed-off-by: Norman Jordan --- ppl/src/main/antlr/OpenSearchPPLParser.g4 | 12 ++++-------- .../org/opensearch/sql/ppl/parser/AstBuilder.java | 12 +++++++----- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ppl/src/main/antlr/OpenSearchPPLParser.g4 b/ppl/src/main/antlr/OpenSearchPPLParser.g4 index c54f3e5eb9..89a32abe23 100644 --- a/ppl/src/main/antlr/OpenSearchPPLParser.g4 +++ b/ppl/src/main/antlr/OpenSearchPPLParser.g4 @@ -134,19 +134,15 @@ fillnullCommand ; fillNullWithTheSameValue - : WITH nullReplacement IN nullableField (COMMA nullableField)* + : WITH nullReplacement = valueExpression IN nullableFieldList = fieldList ; fillNullWithFieldVariousValues - : USING nullableField EQUAL nullReplacement (COMMA nullableField EQUAL nullReplacement)* + : USING nullReplacementExpression (COMMA nullReplacementExpression)* ; -nullableField - : fieldExpression - ; - -nullReplacement - : valueExpression +nullReplacementExpression + : nullableField = fieldExpression EQUAL nullReplacement = valueExpression ; kmeansCommand diff --git a/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstBuilder.java b/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstBuilder.java index 176ab6f189..2fccb8e635 100644 --- a/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstBuilder.java +++ b/ppl/src/main/java/org/opensearch/sql/ppl/parser/AstBuilder.java @@ -399,8 +399,10 @@ public UnresolvedPlan visitFillNullWithTheSameValue( OpenSearchPPLParser.FillNullWithTheSameValueContext ctx) { return new FillNull( FillNull.ContainNullableFieldFill.ofSameValue( - internalVisitExpression(ctx.nullReplacement()), - ctx.nullableField().stream().map(f -> (Field) internalVisitExpression(f)).toList())); + internalVisitExpression(ctx.nullReplacement), + ctx.nullableFieldList.fieldExpression().stream() + .map(f -> (Field) internalVisitExpression(f)) + .toList())); } /** fillnull command. */ @@ -408,11 +410,11 @@ public UnresolvedPlan visitFillNullWithTheSameValue( public UnresolvedPlan visitFillNullWithFieldVariousValues( OpenSearchPPLParser.FillNullWithFieldVariousValuesContext ctx) { ImmutableList.Builder replacementsBuilder = ImmutableList.builder(); - for (int i = 0; i < ctx.nullableField().size(); i++) { + for (int i = 0; i < ctx.nullReplacementExpression().size(); i++) { replacementsBuilder.add( new FillNull.NullableFieldFill( - (Field) internalVisitExpression(ctx.nullableField(i)), - internalVisitExpression(ctx.nullReplacement(i)))); + (Field) internalVisitExpression(ctx.nullReplacementExpression(i).nullableField), + internalVisitExpression(ctx.nullReplacementExpression(i).nullReplacement))); } return new FillNull(