diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java index b7488012ddf8c..7d9fc42a84b04 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java @@ -643,7 +643,11 @@ public String visitFunctionName(EsqlBaseParser.FunctionNameContext ctx) { } private String functionName(EsqlBaseParser.FunctionNameContext ctx) { - TerminalNode first = ctx.LAST(); + /* + * FIRST and LAST are valid function names AND tokens used in `NULLS LAST`. + * So we have to have special handling for them here. + */ + TerminalNode first = ctx.FIRST(); if (first != null) { return first.getText(); }