rubenada commented on a change in pull request #2272:
URL: https://github.com/apache/calcite/pull/2272#discussion_r528563037
##########
File path: core/src/main/java/org/apache/calcite/tools/RelBuilder.java
##########
@@ -495,6 +495,10 @@ public RexNode field(int inputCount, String alias, String
fieldName) {
/** Returns a reference to a given field of a record-valued expression. */
public RexNode field(RexNode e, String name) {
+ if (!e.getType().isStruct()) {
+ throw new IllegalArgumentException("Requested field " + name + " in
non-struct expression "
+ + e.toString() + " (type: " + e.getType() + ")");
+ }
Review comment:
Thanks for the feedback. Looking again at this code in particular, I
have the impression that a simpler fix for this particular issue would be
leaving `RelBuilder` untouched and modify this line in
`RelDataTypeImpl.getField`:
```
@Override public RelDataTypeField getField(String fieldName, boolean
caseSensitive,
boolean elideRecord) {
for (RelDataTypeField field : fieldList) {
// =>
@Override public RelDataTypeField getField(String fieldName, boolean
caseSensitive,
boolean elideRecord) {
for (RelDataTypeField field : getFieldList()) { // change here
```
With this change, the scenario in the Jira would fail with an AssertionError
(thrown by `getFieldList()`) instead of NPE.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]