calcite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rivelli, Adam" <asrive...@gmail.com>
Subject Re: Extracting all columns used in a query
Date Wed, 05 Jun 2019 13:59:08 GMT
Haisheng,

Yes, in that case I'd want to extract r1, r3 and s1, s3. I'm doing this 
to help monitor queries made by others on databases I manage, and 
potentially remove columns that nobody ever uses in any capacity.

It looks like something along the lines of Ivan's code can do this, but 
with some modifications to handle subqueries.

-Adam


On 6/4/19 5:45 AM, Haisheng Yuan wrote:
> Hi Adam,
>
> Calcite defintely can do this. But can you first clarify what do you mean by all the
columns in a query?
> e.g.
> R(r1, r2,r3), S(s1,s2,s3)
> SELECT r1+s1 FROM R,S WHERE r3=s3;
>
> What do you want to extract from this query? r1,r3 for R and s1, s3 for S?
> And why do you want do that?
>
> - Haisheng Yuan------------------------------------------------------------------
> 发件人:Stamatis Zampetakis<zabetak@gmail.com>
> 日 期:2019年06月04日 17:26:18
> 收件人:<dev@calcite.apache.org>
> 主 题:Re: Extracting all columns used in a query
>
> Hey Adam,
>
> I am not sure exactly what information you need, and at which level
> (SqlNode/RelNode), but maybe you can exploit what is present in RelRoot
> [1].
> Follow the calls to the constructor to see which APIs can provide you what
> you need (check for instance, SqlToRelConverter.convertQuery [2]).
>
> Best,
> Stamatis
>
> [1]
> https://github.com/apache/calcite/blob/7f33215ffaf9c0b8f4bef082913c910c77bf4427/core/src/main/java/org/apache/calcite/rel/RelRoot.java#L89
> [2]
> https://github.com/apache/calcite/blob/7f33215ffaf9c0b8f4bef082913c910c77bf4427/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java#L553
>
> On Tue, Jun 4, 2019 at 12:39 AM Muhammad Gelbana <m.gelbana@gmail.com>
> wrote:
>
>> I don't konw if there is an API for that but visiting the  parsed/validated
>> SqlNode tree can do what you asked for.
>>
>> Thanks,
>> Gelbana
>>
>>
>> On Tue, Jun 4, 2019 at 12:12 AM Adam Rivelli <asrivelli@gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> I'm trying to extract all of the (fully qualified) columns used by a
>> query
>>> - similar to the information provided by
>>> RelMetadataQuery.getTableReferences()
>>> <
>>>
>> https://calcite.apache.org/apidocs/org/apache/calcite/rel/metadata/RelMetadataQuery.html#getTableReferences-org.apache.calcite.rel.RelNode-
>>>> ,
>>> but for column references. Is this possible to do using Calcite?
>>>
>>> I've been looking through the API docs and experimenting with the API,
>> but
>>> I haven't found a straightforward way of doing this. Any help or
>>> information is appreciated.
>>>
>>> Adam
>>>


Mime
View raw message