I'm working on a columnar data store that supports hierarchical schemas. It's 
not open source (yet), so I've created a demo repo that mirrors exactly what 
I'm trying to do.

In MapProjectRel, I get some data from `getNamedProjects` and store it on the 
implementor [1]. This data structure (Seq[String]) is not sufficient to capture 
nested projections, but I haven't fixed that yet because my main problem is the 
linq4j translation like I mentioned, which I documented in 
MapToEnumerableConverter [2]. Even getting the raw List[RexNode] from 
`getProjections` would have the data required for my MapEnumerator to get the 
right fields while it scans the dataset.

I don't know whether it makes more sense to use the Enumerable or Interpreter 
calling convention. Performance does matter here as this will hopefully become 
the primary way in which live apps will get data out of the system. Enumerable 
sounds nice in that I can over time pushdown each piece as I  get to it, and 
still have Calcite provide the other operation in the meantime. Would 
Interpreter be able to do the same?

What I've been trying to do is get all the necessary data structures containing 
projections, sorting and aggregation info into my MapEnumerator, because that's 
where the query interface to the underlying database lives in my actual project.

Thanks,
Trevor

[1] 
https://github.com/devth/calcite-map-demo/blob/master/src%2Fmain%2Fscala%2Fdevth%2Fcalcite%2FMapProjectRel.scala#L36

[2] 
https://github.com/devth/calcite-map-demo/blob/master/src%2Fmain%2Fscala%2Fdevth%2Fcalcite%2FMapToEnumerableConverter.scala#L45-L55

Reply via email to