@@ -478,13 +478,16 @@ public void testDropAllColumns_WithStats() {
478478    }
479479
480480    public  void  testEnrichOn () {
481-         assertFieldNames (""" 
482-             from employees 
483-             | sort emp_no 
484-             | limit 1 
485-             | eval x = to_string(languages) 
486-             | enrich languages_policy on x 
487-             | keep emp_no, language_name""" , Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ));
481+         assertFieldNames (
482+             """ 
483+                 from employees 
484+                 | sort emp_no 
485+                 | limit 1 
486+                 | eval x = to_string(languages) 
487+                 | enrich languages_policy on x 
488+                 | keep emp_no, language_name""" ,
489+             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" , "x" , "x.*" )
490+         );
488491    }
489492
490493    public  void  testEnrichOn2 () {
@@ -494,7 +497,7 @@ public void testEnrichOn2() {
494497            | enrich languages_policy on x 
495498            | keep emp_no, language_name 
496499            | sort emp_no 
497-             | limit 1""" , Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ));
500+             | limit 1""" , Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" ));
498501    }
499502
500503    public  void  testUselessEnrich () {
@@ -512,15 +515,15 @@ public void testSimpleSortLimit() {
512515            | enrich languages_policy on x 
513516            | keep emp_no, language_name 
514517            | sort emp_no 
515-             | limit 1""" , Set .of ("languages" , "languages.*" , "emp_no" , "emp_no.*" , "language_name" , "language_name.*" ));
518+             | limit 1""" , Set .of ("languages" , "languages.*" , "emp_no" , "emp_no.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" ));
516519    }
517520
518521    public  void  testWith () {
519522        assertFieldNames (
520523            """ 
521524                from employees | eval x = to_string(languages) | keep emp_no, x | sort emp_no | limit 1 
522525                | enrich languages_policy on x with language_name""" ,
523-             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" )
526+             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" )
524527        );
525528    }
526529
@@ -529,7 +532,7 @@ public void testWithAlias() {
529532            """ 
530533                from employees  | sort emp_no | limit 3 | eval x = to_string(languages) | keep emp_no, x 
531534                | enrich languages_policy on x with lang = language_name""" ,
532-             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" )
535+             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" )
533536        );
534537    }
535538
@@ -538,7 +541,7 @@ public void testWithAliasSort() {
538541            """ 
539542                from employees | eval x = to_string(languages) | keep emp_no, x  | sort emp_no | limit 3 
540543                | enrich languages_policy on x with lang = language_name""" ,
541-             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" )
544+             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" )
542545        );
543546    }
544547
@@ -547,7 +550,7 @@ public void testWithAliasAndPlain() {
547550            """ 
548551                from employees  | sort emp_no desc | limit 3 | eval x = to_string(languages) | keep emp_no, x 
549552                | enrich languages_policy on x with lang = language_name, language_name""" ,
550-             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" )
553+             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" )
551554        );
552555    }
553556
@@ -556,7 +559,7 @@ public void testWithTwoAliasesSameProp() {
556559            """ 
557560                from employees  | sort emp_no | limit 1 | eval x = to_string(languages) | keep emp_no, x 
558561                | enrich languages_policy on x with lang = language_name, lang2 = language_name""" ,
559-             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" )
562+             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" )
560563        );
561564    }
562565
@@ -565,7 +568,7 @@ public void testRedundantWith() {
565568            """ 
566569                from employees  | sort emp_no | limit 1 | eval x = to_string(languages) | keep emp_no, x 
567570                | enrich languages_policy on x with language_name, language_name""" ,
568-             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" )
571+             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" )
569572        );
570573    }
571574
@@ -588,28 +591,34 @@ public void testConstantNullInput() {
588591                | eval x = to_string(languages) 
589592                | keep emp_no, x 
590593                | enrich languages_policy on x with language_name, language_name""" ,
591-             Set .of ("languages" , "languages.*" , "emp_no" , "emp_no.*" , "language_name" , "language_name.*" )
594+             Set .of ("languages" , "languages.*" , "emp_no" , "emp_no.*" , "language_name" , "language_name.*" ,  "x" ,  "x.*" )
592595        );
593596    }
594597
595598    public  void  testEnrichEval () {
596-         assertFieldNames (""" 
597-             from employees 
598-             | eval x = to_string(languages) 
599-             | enrich languages_policy on x with lang = language_name 
600-             | eval language = concat(x, "-", lang) 
601-             | keep emp_no, x, lang, language 
602-             | sort emp_no desc | limit 3""" , Set .of ("languages" , "languages.*" , "emp_no" , "emp_no.*" , "language_name" , "language_name.*" ));
599+         assertFieldNames (
600+             """ 
601+                 from employees 
602+                 | eval x = to_string(languages) 
603+                 | enrich languages_policy on x with lang = language_name 
604+                 | eval language = concat(x, "-", lang) 
605+                 | keep emp_no, x, lang, language 
606+                 | sort emp_no desc | limit 3""" ,
607+             Set .of ("languages" , "languages.*" , "emp_no" , "emp_no.*" , "language_name" , "language_name.*" , "x" , "x.*" , "lang" , "lang.*" )
608+         );
603609    }
604610
605611    public  void  testSimple () {
606-         assertFieldNames (""" 
607-             from employees 
608-             | eval x = 1, y = to_string(languages) 
609-             | enrich languages_policy on y 
610-             | where x > 1 
611-             | keep emp_no, language_name 
612-             | limit 1""" , Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" ));
612+         assertFieldNames (
613+             """ 
614+                 from employees 
615+                 | eval x = 1, y = to_string(languages) 
616+                 | enrich languages_policy on y 
617+                 | where x > 1 
618+                 | keep emp_no, language_name 
619+                 | limit 1""" ,
620+             Set .of ("emp_no" , "emp_no.*" , "languages" , "languages.*" , "language_name" , "language_name.*" , "x" , "y" , "x.*" , "y.*" )
621+         );
613622    }
614623
615624    public  void  testEvalNullSort () {
@@ -1575,6 +1584,54 @@ public void testMultiLookupJoinSameIndexKeepAfter() {
15751584        );
15761585    }
15771586
1587+     public  void  testJoinMaskingKeep () {
1588+         assertFieldNames (
1589+             """ 
1590+                 from languag* 
1591+                 | eval type = null 
1592+                 | rename language_name as message 
1593+                 | lookup join message_types_lookup on message 
1594+                 | rename type as message 
1595+                 | lookup join message_types_lookup on message 
1596+                 | keep `language.name`""" ,
1597+             Set .of ("language.name" , "type" , "language_name" , "message" , "language_name.*" , "message.*" , "type.*" , "language.name.*" )
1598+         );
1599+     }
1600+ 
1601+     public  void  testJoinMaskingKeep2 () {
1602+         assertFieldNames (""" 
1603+             from languag* 
1604+             | eval type = "foo" 
1605+             | rename type as message 
1606+             | lookup join message_types_lookup on message 
1607+             | rename type as message 
1608+             | lookup join message_types_lookup on message 
1609+             | keep `language.name`""" , Set .of ("language.name" , "type" , "message" , "message.*" , "type.*" , "language.name.*" ));
1610+     }
1611+ 
1612+     public  void  testEnrichMaskingEvalOn () {
1613+         assertFieldNames (""" 
1614+             from employees 
1615+             | eval language_name = null 
1616+             | enrich languages_policy on languages 
1617+             | rename language_name as languages 
1618+             | eval languages = length(languages) 
1619+             | enrich languages_policy on languages 
1620+             | keep emp_no, language_name""" , Set .of ("emp_no" , "language_name" , "languages" , "language_name.*" , "languages.*" , "emp_no.*" ));
1621+     }
1622+ 
1623+     public  void  testEnrichAndJoinMaskingEvalWh () {
1624+         assertFieldNames (""" 
1625+             from employees 
1626+             | eval language_name = null 
1627+             | enrich languages_policy on languages 
1628+             | rename language_name as languages 
1629+             | eval languages = length(languages) 
1630+             | enrich languages_policy on languages 
1631+             | lookup join message_types_lookup on language_name 
1632+             | keep emp_no, language_name""" , Set .of ("emp_no" , "language_name" , "languages" , "language_name.*" , "languages.*" , "emp_no.*" ));
1633+     }
1634+ 
15781635    private  Set <String > fieldNames (String  query , Set <String > enrichPolicyMatchFields ) {
15791636        var  preAnalysisResult  = new  EsqlSession .PreAnalysisResult (null );
15801637        return  EsqlSession .fieldNames (parser .createStatement (query ), enrichPolicyMatchFields , preAnalysisResult ).fieldNames ();
0 commit comments