I'm using "ITEM" operator (aka map access), like the following:
select hm.this['@retained'] from java.util.HashMap hm;

Calcite infers this['@retained'] as "ANY" type.
The SQL works just fine.

However if I try to use computation, e.g. select sum(this['@retained'])
..., then evaluation fails.
The statement passes validator and fails in Enumerable compilation as
follows:
/*   1 */ public static class Record2_0 implements java.io.Serializable {
/*   2 */   public Object f0;
...
/*  35 */ }
...
/*  80 */     .apply(), new org.apache.calcite.linq4j.function.Function2() {
/*  81 */       public Record2_0 apply(Record2_0 acc, Object in) {
/*  82 */         if (in != null) {
/*  83 */           acc.f1 = true;
/*  84 */           acc.f0 = (Object) (acc.f0 + in); <-- adding
 Object+Object
/*  85 */         }

It does look like a drawback.

Any ideas if it is a bug or feature?
In case of a bug is it validator or executor related?

Vladimir

Reply via email to