Skip to content

Commit 06b70fb

Browse files
committed
Update javadoc
Signed-off-by: Chen Dai <daichen@amazon.com>
1 parent 788f09c commit 06b70fb

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

core/src/main/java/org/opensearch/sql/calcite/CalciteRelNodeVisitor.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,15 +193,12 @@ public RelNode analyze(UnresolvedPlan unresolved, CalcitePlanContext context) {
193193
return unresolved.accept(this, context);
194194
}
195195

196-
/**
197-
* Override visitChildren to auto-materialize MAP dotted paths after children are visited. When a
198-
* command references dotted paths into MAP columns, they are materialized as flat columns before
199-
* the command's own logic runs.
200-
*/
201196
@Override
202197
public RelNode visitChildren(Node node, CalcitePlanContext context) {
203198
RelNode result = super.visitChildren(node, context);
204199
if (node instanceof UnresolvedPlan plan) {
200+
// Materialize MAP dotted paths as flat columns after children are analyzed
201+
// (so MAP/struct types are known) but before the command's own visit logic runs.
205202
mapPathMaterializer.materializePaths(plan, context);
206203
}
207204
return result;

core/src/main/java/org/opensearch/sql/calcite/MapPathPreMaterializer.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,17 @@ private void doMaterializeMapPaths(List<Field> fields, CalcitePlanContext contex
7373
Set<String> existingFields =
7474
new HashSet<>(context.relBuilder.peek().getRowType().getFieldNames());
7575
List<RexNode> newColumns = new ArrayList<>();
76-
for (Field f : fields) {
76+
for (Field field : fields) {
7777
try {
78-
RexNode resolved = rexVisitor.analyze(f, context);
79-
String name = f.getField().toString();
78+
RexNode resolved = rexVisitor.analyze(field, context);
79+
String name = field.getField().toString();
8080
if (resolved.getKind() == SqlKind.ITEM && !existingFields.contains(name)) {
8181
newColumns.add(context.relBuilder.alias(resolved, name));
82+
existingFields.add(name);
8283
}
8384
} catch (RuntimeException e) {
84-
log.debug("Skipping field resolution for '{}': {}", f.getField(), e.getMessage(), e);
85+
// Skip unresolvable fields (e.g. wildcards); let the command itself handle them
86+
log.debug("Skipping field resolution for '{}': {}", field.getField(), e.getMessage(), e);
8587
}
8688
}
8789

core/src/test/java/org/opensearch/sql/calcite/MapPathPreMaterializerTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
import org.opensearch.sql.calcite.utils.OpenSearchTypeFactory;
5757
import org.opensearch.sql.executor.QueryType;
5858

59-
/** Unit tests for {@link MapPathPreMaterializer}. */
6059
@ExtendWith(MockitoExtension.class)
6160
public class MapPathPreMaterializerTest {
6261

0 commit comments

Comments
 (0)