Skip to content

Commit f11ca93

Browse files
committed
Correct subfield access logical when calling ITEM
Signed-off-by: Yuanchun Shen <yuanchu@amazon.com>
1 parent db5e539 commit f11ca93

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

core/src/main/java/org/opensearch/sql/ast/expression/QualifiedName.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
@Getter
2323
@EqualsAndHashCode(callSuper = false)
2424
public class QualifiedName extends UnresolvedExpression {
25+
public static final String DELIMITER = ".";
2526
private final List<String> parts;
2627

2728
public QualifiedName(String name) {
@@ -94,7 +95,7 @@ public QualifiedName rest() {
9495
}
9596

9697
public String toString() {
97-
return String.join(".", this.parts);
98+
return String.join(DELIMITER, this.parts);
9899
}
99100

100101
@Override

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,10 @@ private static RexNode resolveFieldAccess(
249249
if (length == parts.size() - start) {
250250
return field;
251251
} else {
252-
String itemName = joinParts(parts, length + start, parts.size() - 1 - length);
253-
return createItemAccess(field, itemName, context);
252+
String itemName = joinParts(parts, length + start, parts.size() - length);
253+
return context.relBuilder.alias(
254+
createItemAccess(field, itemName, context),
255+
String.join(QualifiedName.DELIMITER, parts.subList(start, parts.size())));
254256
}
255257
}
256258

0 commit comments

Comments
 (0)