Hello,

I would like to understand how exactly generic map type (_MAP) works
with select
* expression. Say I have the following query (on document database) :

-- first query:  2 projectionsselect * from elastic.zips order by
_MAP['state'] -- second query: single projectionselect _MAP['state']
from elastic.zips order by _MAP['state']

For first query (select *) I’m getting 2 projections (inside
ElasticsearchProject
<https://github.com/apache/calcite/blob/master/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchProject.java#L67>)
for some reason

0 = {RexInputRef@12207} "$0"
   index = 0
   name = "$0"
   type = {MapSqlType@12211} "(VARCHAR, ANY) MAP"
   digest = "$0"
1 = {RexCall@12208} "ITEM($0, 'state')"
   op = {SqlItemOperator@12213} "ITEM"
   operands = {RegularImmutableList@12214}  size = 2
   type = {BasicSqlType@12215} "ANY"
   digest = "ITEM($0, 'state')"

For second query and when using views there is no such issue.

My question is how to correctly identify select * when rowType is map (
MapSqlType
<https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql/type/MapSqlType.java>)?


Thank you,
Andrei.

Reply via email to