Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.26.0
Description
In Avatica 1.18.0, `CursorFactory#deduce(List<ColumnMetaData> columns, Class resultClazz)` introduces a validation step requiring the names appearing in the column metadata to match fields of `resultClazz`, whenever the class is not null.
`CalciteMetaImpl#createEmptyResultSet` overrides `MetaImpl#createEmptyResultSet` (class from Avatica), only to pass a value non null value to the `resultClazz` argument.
Column metadata column names for Calcite internal metadata classes (e.g., `MetaColumn`, `MetaCatalog`, `MetaSchema`, etc.) are built using `MetaImpl#fieldMetadata` (transforming the name from camel case into upper-snake case), violating the new contract of `deduce`.
This is not problematic, because `deduce` is only used to create an empty result set, we are only interested in preserving the sought column names, which is already the case forĀ `MetaImpl#createEmptyResultSet`.
`CalciteMetaImpl#createEmptyResultSet`, if adapted to match the changes coming from Avatica 1.18.0 would become identical to the `MetaImpl#createEmptyResultSet` it overrides, and it should therefore be removed.
Attachments
Issue Links
- relates to
-
CALCITE-4503 Order of fields in records should follow that of the SQL types
- Closed
- links to