Skip to content

Commit 776fcad

Browse files
Address coderrabbit comments
Signed-off-by: Srikanth Padakanti <srikanth_padakanti@apple.com>
1 parent a93660b commit 776fcad

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3180,7 +3180,22 @@ private int resolveTargetIndex(Field targetField, CalcitePlanContext context) {
31803180
throw new SemanticCheckException(
31813181
"mvcombine target must be a direct field reference, but got: " + targetField);
31823182
}
3183-
return ((RexInputRef) targetRex).getIndex();
3183+
3184+
final int index = ((RexInputRef) targetRex).getIndex();
3185+
3186+
// Validate the target field is scalar-ish. mvcombine outputs ARRAY<T>, so target must not
3187+
// already be ARRAY.
3188+
final RelDataType fieldType =
3189+
context.relBuilder.peek().getRowType().getFieldList().get(index).getType();
3190+
3191+
// Prefer Calcite type inspection instead of relying on rel type name string checks.
3192+
if (fieldType.getSqlTypeName() == org.apache.calcite.sql.type.SqlTypeName.ARRAY
3193+
|| fieldType.getSqlTypeName() == org.apache.calcite.sql.type.SqlTypeName.MULTISET) {
3194+
throw new SemanticCheckException(
3195+
"mvcombine target cannot be an array/multivalue type, but got: " + fieldType);
3196+
}
3197+
3198+
return index;
31843199
}
31853200

31863201
private List<RexNode> buildGroupExpressionsExcludingTarget(

0 commit comments

Comments
 (0)