Thanks a lot

But I found if the select is from the subquery, `getFieldOrigins` returns
null, because you can not find the table(see in the pic.).

        String sql = "SELECT T1.NAME,\n"
            + "       T1.NID,\n"
            + "       T2.NID,\n"
            + "       T2.COMPANY\n"
            + "FROM\n"
            + "  (SELECT (U.ID +100) AS NID,\n"
            + "          U.NAME AS NAME\n"
            + "   FROM USERS U) T1\n"
            + "JOIN\n"
            + "  (SELECT (J.ID +100) AS NID,\n"
            + "          J.COMPANY\n"
            + "   FROM JOBS J) T2 ON T1.NID = T2.NID";

[image: image.png]


Regards!

Aron Tao


Seliverstov Igor <gvvinbl...@gmail.com> 于2020年2月19日周三 下午5:38写道:

> Aron Tao,
>
> I think you need the next two methods:
>
> org.apache.calcite.sql.validate.SqlValidatorImpl#getFieldOrigins
> java.sql.ResultSetMetaData#getTableName
>
> Regards,
> Igor
>
> > 19 февр. 2020 г., в 10:29, JiaTao Tao <taojia...@gmail.com> написал(а):
> >
> > Hi
> > Thanks a lot.
> > Can you give more details, say which method/field?
> >
> > Regards!
> >
> > Aron Tao
> >
> >
> > Seliverstov Igor <gvvinbl...@gmail.com> 于2020年2月19日周三 下午2:31写道:
> >
> >> You can use their origins (says where a column came from).
> >>
> >> It's accessable from SqlValidatorImpl or jdbc result set
> >>
> >> ср, 19 февр. 2020 г., 9:25 JiaTao Tao <t...@apache.org>:
> >>
> >>> What I really need is to collect every part of the SQL, Which columns
> are
> >>> used as filters, which are used as projection(Columns on the source
> >>> table), But
> >>> the existence of nested subqueries complicates the issue.
> >>>
> >>>
> >>> Regards!
> >>>
> >>> Aron Tao
> >>>
> >>>
> >>> JiaTao Tao <t...@apache.org> 于2020年2月19日周三 下午2:17写道:
> >>>
> >>>> SQL like this:
> >>>> ```
> >>>> SELECT T1.NID,
> >>>>       T1.NAME,
> >>>>       T2.COMPANY
> >>>> FROM
> >>>>  (SELECT (U.ID +100) AS NID,
> >>>>          U.NAME AS NAME
> >>>>   FROM USERS U) T1
> >>>> JOIN
> >>>>  (SELECT (J.ID +100) AS NID,
> >>>>          J.COMPANY
> >>>>   FROM JOBS J) T2 ON T1.NID = T2.NID
> >>>> ```
> >>>> What I wanted is that T1.NID comes from USER.ID, T1.NAME comes from
> >>>> USER.NAME.
> >>>>
> >>>> Has anyone done similar work? Is there a ready-made example to refer
> >> to?
> >>>>
> >>>>
> >>>> Regards!
> >>>>
> >>>> Aron Tao
> >>>>
> >>>
> >>
>
>

Reply via email to