Skip to content

Commit b830582

Browse files
committed
test(api): pin UnifiedQueryContext PATTERN_* defaults via planner test
Per @dai-chen: verify the RelNode produced when `patterns <field>` is run without explicit method=/mode= args — exercises that the PATTERN_METHOD and PATTERN_MODE defaults flow through to AstBuilder.visitPatternsCommand and produce a valid SIMPLE/LABEL lowering with a `patterns_field` projection. Signed-off-by: Kai Huang <ahkcs@amazon.com>
1 parent 31f248a commit b830582

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

api/src/test/java/org/opensearch/sql/api/UnifiedQueryPlannerTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,18 @@ public void assertionErrorIsWrappedAsSemanticCheckException() {
144144
.assertErrorMessageEquals("Failed to plan query: invalid plan structure")
145145
.assertCauseType(AssertionError.class);
146146
}
147+
148+
/**
149+
* Without the {@code PATTERN_*} defaults in {@link UnifiedQueryContext}, a bare
150+
* {@code patterns <field>} (no explicit {@code method=}/{@code mode=}) dies at parse time
151+
* with {@code PatternMethod.valueOf("NULL")} because {@code AstBuilder.visitPatternsCommand}
152+
* reads a null from {@code settings.getSettingValue(Key.PATTERN_METHOD)}. With the defaults
153+
* present, the planner lowers patterns to SIMPLE / LABEL mode and adds {@code patterns_field}.
154+
*/
155+
@Test
156+
public void testPPLPatternsPicksUpDefaults() {
157+
givenQuery("source = catalog.employees | patterns name")
158+
.assertPlanContains("REGEXP_REPLACE")
159+
.assertFields("id", "name", "age", "department", "patterns_field");
160+
}
147161
}

0 commit comments

Comments
 (0)