Github user jjmeyer0 commented on the issue: https://github.com/apache/metron/pull/814 Also, I don't think there is an issue with the map function directly. It's actually an issue with the logical_expression `var1` and using/not using a `default` branch. It seems like the stack isn't properly being managed. For example things are being pushed (eg. when a logical_expr is just `var1`) when they shouldn't and popped when they shouldn't be (eg. when there is no default?). I haven't pin pointed it directly yet, but I hope this helps somewhat. Below are a few example tests that I have created. ```java // Here there is a null on the stack @Test @SuppressWarnings("unchecked") public void test1FailsWithMoreOnStack() { Assert.assertEquals("a", run("match{ foo : 'a' }", new HashMap() {{ put("foo", true); }})); } ``` // Here it's an empty stack when we expect 'a' i believe. ```java @Test @SuppressWarnings("unchecked") public void test1FailsEmptyStack() { Assert.assertEquals("a", run("match{ foo == true : 'a' }", new HashMap() {{ put("foo", true); }})); } ``` ```java // This is *not* properly handled @Test @SuppressWarnings("unchecked") public void test1Passes() { Assert.assertEquals("a", run("match{ foo : 'a', default: 'b' }", new HashMap() {{ put("foo", true); }})); } ``` ```java // This is properly handled @Test @SuppressWarnings("unchecked") public void test1Passes() { Assert.assertEquals("a", run("match{ foo == true : 'a', default: 'b' }", new HashMap() {{ put("foo", true); }})); } ``` ```java // Example where map works @Test @SuppressWarnings("unchecked") public void workingMatchWithMap() { Assert.assertEquals(Arrays.asList("OK", "HAHA"), run("match{ foo > 100 : THROW('oops'), foo > 200 : THROW('oh no'), foo >= 50 : MAP(['ok', 'haha'], (a) -> TO_UPPER(a)), default: 'a' }", new HashMap() {{ put("foo", 50); }})); } ```
---