git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Generic Map type (_MAP) and select star (*)


Hi Andrei,

As you correctly noticed the extra projection column comes from the ORDER
BY clause.

In order to understand why have a look at the Javadoc of RelRoot class (
https://github.com/apache/calcite/blob/c39bfaa02a06ac91575076a6e74f29863923f5eb/core/src/main/java/org/apache/calcite/rel/RelRoot.java#L37
).

If you want to understand how RelRoot is used the best way would be to
start from the creation of the object in CalcitePrepareImpl class.(
https://github.com/apache/calcite/blob/c39bfaa02a06ac91575076a6e74f29863923f5eb/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java#L1113
)

Best,
Stamatis


Στις Πέμ, 4 Οκτ 2018 στις 9:19 μ.μ., ο/η Andrei Sereda <andrei@xxxxxxxxx>
έγραψε:

> but just a minor point that when you post links to specific lines of code,
> it’s helpful if that link is to a specific revision
>
> Sure will do.
>
> Doing some more debugging it seems that projections are “imported” from
> order
> by clause :
>
> select * from elastic.zips order by _MAP['state'], _MAP['city']
>
>  Projects (3) : [$0, ITEM($0, 'state'), ITEM($0, 'city')]
>
> On Thu, Oct 4, 2018 at 2:53 PM Michael Mior mmior@xxxxxxxxxx
> <http://mailto:mmior@xxxxxxxxxx> wrote:
> >
>
> Unfortunately I don’t have an answer, but just a minor point that when you
> post links to specific lines of code, it’s helpful if that link is to a
> specific revision. You can press the “y” shortcut to get this link (pasted
> below).
>
>
> https://github.com/apache/calcite/blob/c39bfaa02a06ac91575076a6e74f29863923f5eb/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchProject.java#L67
>
> —
> Michael Mior
> mmior@xxxxxxxxxx
>
> Le jeu. 4 oct. 2018 à 14:47, Andrei Sereda andrei@xxxxxxxxx
> <http://mailto:andrei@xxxxxxxxx> a écrit :
>
> 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} “[image: 0]0”
> type = {MapSqlType@12211} “(VARCHAR, ANY) MAP”
> digest = “[image: 0]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.
>