@@ -3039,6 +3039,7 @@ public void testBasicFork() {
30393039
30403040 LogicalPlan plan = analyze ("""
30413041 from test
3042+ | KEEP emp_no, first_name, last_name
30423043 | WHERE first_name == "Chris"
30433044 | FORK ( WHERE emp_no > 1 )
30443045 ( WHERE emp_no > 2 )
@@ -3047,6 +3048,7 @@ public void testBasicFork() {
30473048 ( LIMIT 9 )
30483049 """ );
30493050
3051+ var expectedOutput = List .of ("emp_no" , "first_name" , "last_name" , "_fork" );
30503052 Limit limit = as (plan , Limit .class );
30513053 Fork fork = as (limit .child (), Fork .class );
30523054
@@ -3056,33 +3058,44 @@ public void testBasicFork() {
30563058 // fork branch 1
30573059 limit = as (subPlans .get (0 ), Limit .class );
30583060 assertThat (as (limit .limit (), Literal .class ).value (), equalTo (DEFAULT_LIMIT ));
3059- Eval eval = as (limit .child (), Eval .class );
3061+ Keep keep = as (limit .child (), Keep .class );
3062+ List <String > keptColumns = keep .expressions ().stream ().map (exp -> as (exp , Attribute .class ).name ()).toList ();
3063+ assertThat (keptColumns , equalTo (expectedOutput ));
3064+ Eval eval = as (keep .child (), Eval .class );
30603065 assertThat (as (eval .fields ().get (0 ), Alias .class ), equalTo (alias ("_fork" , string ("fork1" ))));
30613066 Filter filter = as (eval .child (), Filter .class );
30623067 assertThat (as (filter .condition (), GreaterThan .class ).right (), equalTo (literal (1 )));
30633068
30643069 filter = as (filter .child (), Filter .class );
30653070 assertThat (as (filter .condition (), Equals .class ).right (), equalTo (string ("Chris" )));
3066- var esRelation = as (filter .child (), EsRelation .class );
3071+ EsqlProject project = as (filter .child (), EsqlProject .class );
3072+ var esRelation = as (project .child (), EsRelation .class );
30673073 assertThat (esRelation .indexPattern (), equalTo ("test" ));
30683074
30693075 // fork branch 2
30703076 limit = as (subPlans .get (1 ), Limit .class );
30713077 assertThat (as (limit .limit (), Literal .class ).value (), equalTo (DEFAULT_LIMIT ));
3072- eval = as (limit .child (), Eval .class );
3078+ keep = as (limit .child (), Keep .class );
3079+ keptColumns = keep .expressions ().stream ().map (exp -> as (exp , Attribute .class ).name ()).toList ();
3080+ assertThat (keptColumns , equalTo (expectedOutput ));
3081+ eval = as (keep .child (), Eval .class );
30733082 assertThat (as (eval .fields ().get (0 ), Alias .class ), equalTo (alias ("_fork" , string ("fork2" ))));
30743083 filter = as (eval .child (), Filter .class );
30753084 assertThat (as (filter .condition (), GreaterThan .class ).right (), equalTo (literal (2 )));
30763085
30773086 filter = as (filter .child (), Filter .class );
30783087 assertThat (as (filter .condition (), Equals .class ).right (), equalTo (string ("Chris" )));
3079- esRelation = as (filter .child (), EsRelation .class );
3088+ project = as (filter .child (), EsqlProject .class );
3089+ esRelation = as (project .child (), EsRelation .class );
30803090 assertThat (esRelation .indexPattern (), equalTo ("test" ));
30813091
30823092 // fork branch 3
30833093 limit = as (subPlans .get (2 ), Limit .class );
30843094 assertThat (as (limit .limit (), Literal .class ).value (), equalTo (MAX_LIMIT ));
3085- eval = as (limit .child (), Eval .class );
3095+ keep = as (limit .child (), Keep .class );
3096+ keptColumns = keep .expressions ().stream ().map (exp -> as (exp , Attribute .class ).name ()).toList ();
3097+ assertThat (keptColumns , equalTo (expectedOutput ));
3098+ eval = as (keep .child (), Eval .class );
30863099 assertThat (as (eval .fields ().get (0 ), Alias .class ), equalTo (alias ("_fork" , string ("fork3" ))));
30873100 limit = as (eval .child (), Limit .class );
30883101 assertThat (as (limit .limit (), Literal .class ).value (), equalTo (7 ));
@@ -3091,30 +3104,39 @@ public void testBasicFork() {
30913104 assertThat (as (filter .condition (), GreaterThan .class ).right (), equalTo (literal (3 )));
30923105 filter = as (filter .child (), Filter .class );
30933106 assertThat (as (filter .condition (), Equals .class ).right (), equalTo (string ("Chris" )));
3094- esRelation = as (filter .child (), EsRelation .class );
3107+ project = as (filter .child (), EsqlProject .class );
3108+ esRelation = as (project .child (), EsRelation .class );
30953109 assertThat (esRelation .indexPattern (), equalTo ("test" ));
30963110
30973111 // fork branch 4
30983112 limit = as (subPlans .get (3 ), Limit .class );
30993113 assertThat (as (limit .limit (), Literal .class ).value (), equalTo (DEFAULT_LIMIT ));
3100- eval = as (limit .child (), Eval .class );
3114+ keep = as (limit .child (), Keep .class );
3115+ keptColumns = keep .expressions ().stream ().map (exp -> as (exp , Attribute .class ).name ()).toList ();
3116+ assertThat (keptColumns , equalTo (expectedOutput ));
3117+ eval = as (keep .child (), Eval .class );
31013118 assertThat (as (eval .fields ().get (0 ), Alias .class ), equalTo (alias ("_fork" , string ("fork4" ))));
31023119 orderBy = as (eval .child (), OrderBy .class );
31033120 filter = as (orderBy .child (), Filter .class );
31043121 assertThat (as (filter .condition (), Equals .class ).right (), equalTo (string ("Chris" )));
3105- esRelation = as (filter .child (), EsRelation .class );
3122+ project = as (filter .child (), EsqlProject .class );
3123+ esRelation = as (project .child (), EsRelation .class );
31063124 assertThat (esRelation .indexPattern (), equalTo ("test" ));
31073125
31083126 // fork branch 5
31093127 limit = as (subPlans .get (4 ), Limit .class );
31103128 assertThat (as (limit .limit (), Literal .class ).value (), equalTo (MAX_LIMIT ));
3111- eval = as (limit .child (), Eval .class );
3129+ keep = as (limit .child (), Keep .class );
3130+ keptColumns = keep .expressions ().stream ().map (exp -> as (exp , Attribute .class ).name ()).toList ();
3131+ assertThat (keptColumns , equalTo (expectedOutput ));
3132+ eval = as (keep .child (), Eval .class );
31123133 assertThat (as (eval .fields ().get (0 ), Alias .class ), equalTo (alias ("_fork" , string ("fork5" ))));
31133134 limit = as (eval .child (), Limit .class );
31143135 assertThat (as (limit .limit (), Literal .class ).value (), equalTo (9 ));
31153136 filter = as (limit .child (), Filter .class );
31163137 assertThat (as (filter .condition (), Equals .class ).right (), equalTo (string ("Chris" )));
3117- esRelation = as (filter .child (), EsRelation .class );
3138+ project = as (filter .child (), EsqlProject .class );
3139+ esRelation = as (project .child (), EsRelation .class );
31183140 assertThat (esRelation .indexPattern (), equalTo ("test" ));
31193141 }
31203142
@@ -3352,7 +3374,7 @@ public void testValidRrf() {
33523374 assertThat (dedup .aggregates ().size (), equalTo (15 ));
33533375
33543376 RrfScoreEval rrf = as (dedup .child (), RrfScoreEval .class );
3355- assertThat (rrf .scoreAttribute (), instanceOf (MetadataAttribute .class ));
3377+ assertThat (rrf .scoreAttribute (), instanceOf (ReferenceAttribute .class ));
33563378 assertThat (rrf .scoreAttribute ().name (), equalTo ("_score" ));
33573379 assertThat (rrf .forkAttribute (), instanceOf (ReferenceAttribute .class ));
33583380 assertThat (rrf .forkAttribute ().name (), equalTo ("_fork" ));
0 commit comments