[
https://issues.apache.org/jira/browse/CALCITE-601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14327824#comment-14327824
]
Vladimir Sitnikov commented on CALCITE-601:
-------------------------------------------
In fact it does not.
You might probably want to hack
{{org.apache.calcite.adapter.enumerable.EnumerableRelImplementor#implementRoot}},
however I do not like that since it would diverge APIs. Bindable vs enumerable
battle is not yet over, thus I do not want to diverge things unless it makes
sense.
See: if we consider "Enumerable convention" as a pluggable implementation, then
base interface should be capable to support features.
In other words, things like "if (instanceof enumerable) \{ grab shape from
it\}" do not suit "core" component with "enumerable" being a plug-in.
Here's one more relevant use-case: "accept of {{cursor}} parameter". It is not
clear what calling convention should be.
It would be nice to make it clear what will be passed in the parameter.
{{Enumerable<Object\[\]>}} or {{Enumerable<Class>}} or {{ResultSet}} or
whatever.
It would be nice to have "converter" out of the box.
If all plays well, we could probably make JdbcToEnumerable to by-pass code
generation by simple composition of "ResultSet shape vs Meta.CursorFactory"
> Meta.CursorFactory#deduce should not try to check column count
> --------------------------------------------------------------
>
> Key: CALCITE-601
> URL: https://issues.apache.org/jira/browse/CALCITE-601
> Project: Calcite
> Issue Type: Bug
> Affects Versions: 1.0.0-incubating
> Reporter: Vladimir Sitnikov
> Assignee: Julian Hyde
>
> Current implementation of {{Meta.CursorFactory#deduce}} thinks that
> Enumerable with single column cannot be {{Object\[\]}} wrapped.
> This sounds like an extreme high coupling.
> I think it makes sense if "Bindable" would provide its {{JavaRowFormat}}
> along with "ElementType".
> I think it makes sense to reject non-typed, non-rowformatproviding Bindables
> out of Enumerable/Bindable conventions.
> {code:java}
> public static CursorFactory deduce(List<ColumnMetaData> columns,
> Class resultClazz) {
> if (columns.size() == 1) {
> return OBJECT; // <-- !! Look here. deduce just assumes
> single-column results are always naked
> } else if (resultClazz != null && !resultClazz.isArray()) {
> return record(resultClazz);
> } else {
> return ARRAY;
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)