|
|
@@ -758,15 +758,27 @@ public class StatementParserTests extends AbstractStatementParserTests {
|
|
|
public void testGrokPattern() {
|
|
|
LogicalPlan cmd = processingCommand("grok a \"%{WORD:foo}\"");
|
|
|
assertEquals(Grok.class, cmd.getClass());
|
|
|
- Grok dissect = (Grok) cmd;
|
|
|
- assertEquals("%{WORD:foo}", dissect.parser().pattern());
|
|
|
- assertEquals(List.of(referenceAttribute("foo", KEYWORD)), dissect.extractedFields());
|
|
|
+ Grok grok = (Grok) cmd;
|
|
|
+ assertEquals("%{WORD:foo}", grok.parser().pattern());
|
|
|
+ assertEquals(List.of(referenceAttribute("foo", KEYWORD)), grok.extractedFields());
|
|
|
|
|
|
ParsingException pe = expectThrows(ParsingException.class, () -> statement("row a = \"foo bar\" | grok a \"%{_invalid_:x}\""));
|
|
|
assertThat(
|
|
|
pe.getMessage(),
|
|
|
containsString("Invalid pattern [%{_invalid_:x}] for grok: Unable to find pattern [_invalid_] in Grok's pattern dictionary")
|
|
|
);
|
|
|
+
|
|
|
+ cmd = processingCommand("grok a \"%{WORD:foo} %{WORD:foo}\"");
|
|
|
+ assertEquals(Grok.class, cmd.getClass());
|
|
|
+ grok = (Grok) cmd;
|
|
|
+ assertEquals("%{WORD:foo} %{WORD:foo}", grok.parser().pattern());
|
|
|
+ assertEquals(List.of(referenceAttribute("foo", KEYWORD)), grok.extractedFields());
|
|
|
+
|
|
|
+ expectError(
|
|
|
+ "row a = \"foo bar\" | GROK a \"%{NUMBER:foo} %{WORD:foo}\"",
|
|
|
+ "line 1:22: Invalid GROK pattern [%{NUMBER:foo} %{WORD:foo}]:"
|
|
|
+ + " the attribute [foo] is defined multiple times with different types"
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
public void testLikeRLike() {
|