diff --git a/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/scan/CalciteEnumerableIndexScan.java b/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/scan/CalciteEnumerableIndexScan.java index 7fb32cc761a..83ff7cea252 100644 --- a/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/scan/CalciteEnumerableIndexScan.java +++ b/opensearch/src/main/java/org/opensearch/sql/opensearch/storage/scan/CalciteEnumerableIndexScan.java @@ -118,6 +118,17 @@ public Enumerator enumerator() { } private List getFieldPath() { + // If project pushdown occurred, use the actual projected field names from the context + for (PushDownOperation operation : pushDownContext) { + if (operation.type() == PushDownType.PROJECT) { + List projectedFields = (List) operation.digest(); + return projectedFields.stream() + .map(f -> osIndex.getAliasMapping().getOrDefault(f, f)) + .toList(); + } + } + + // If there was no project pushdown use logical field names with alias mapping return getRowType().getFieldNames().stream() .map(f -> osIndex.getAliasMapping().getOrDefault(f, f)) .toList();