Mark Grey created CALCITE-4972: ---------------------------------- Summary: Qualify subfields of array columns containing structs in return of getFieldOrigins Key: CALCITE-4972 URL: https://issues.apache.org/jira/browse/CALCITE-4972 Project: Calcite Issue Type: Improvement Components: core Affects Versions: 1.28.0 Reporter: Mark Grey
Attempting to follow on the [suggestions from Julian in this thread|https://lists.apache.org/thread/pdpqtzy5mtzlpdbhwghbty6cj0jgc86l], found a potential improvement. Given a table schema containing a repeated array of structs and a query projecting fields of that struct via UNNEST, the present implementation of {{getFieldOrigins}} in {{SqlValidatorImpl}} will return a list representation suggesting that the subfield is actually a member of the top level table row type. For example, when using the [DEPT_NESTED table from the MockCatalogReaderSimple|https://github.com/apache/calcite/blob/master/testkit/src/main/java/org/apache/calcite/test/catalog/MockCatalogReaderSimple.java#L152-L159] within tests with the following query: {code:sql} select e.empno from dept_nested, unnest(employees) as e {code} The return value will be: {code} {CATALOG.SALES.DEPT_NESTED.EMPNO} {code} Rather than: {code} {CATALOG.SALES.DEPT_NESTED.EMPLOYEES.EMPNO} {code} No such column {{EMPNO}} exists in the root schema of the DEPT_NESTED table. [The javadoc for the method |https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql/validate/SqlValidator.java#L717-L728]however suggests that the return from this method should always be four entries long, although it would seem this doesn't account for nesting. Is this intended behavior, or should {{column}} entry of this list be of variable length? -- This message was sent by Atlassian Jira (v8.20.1#820001)