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<[email protected]>
日 期:2019年06月04日 17:26:18
收件人:<[email protected]>
主 题: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 <[email protected]>
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 <[email protected]> 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