I made some progress getting a local version of this working (thanks for
the pointers).

I'm still working on it, but to share a couple of items encountered.

1) I have not yet identified an obvious entry point to configure / register
a custom version on the JdbcImplementor class

2) it seems that a simple select on a single column with a limit is always
converted to project on a sub query that contains the limit (which is then
triggering my query rewriting unnecessarily).   I think this is caused by
the ProjectSortTransposeRule as part of logical planning. (At this point
I'm thinking I may need a custom JdbcRule to reverse this or to make my
JdbcImplementor smarter,  but I've not tried / validated that)

Thanks

Andrew

On Tue, 16 Apr 2019, 07:40 Andrew O, <[email protected]> wrote:

> Thanks for the pointers,  I'll take a further look.
>
> Andrew
>
> On Mon, 15 Apr 2019, 20:08 Julian Hyde, <[email protected]> wrote:
>
>> If you decide to write a RelOptRule, your rule could perhaps match
>> RelNode(Sort) rather than Sort, and therefore the rule will not fire at the
>> top-level.
>>
>> However, you could also do the transformation on RelToSqlConverter, which
>> is a more conventional visitor; you can look at the stack to see whether
>> you are at the top.
>>
>> You should add code to the dialect, similar to how
>> SqlNode.emulateNullDirection works, and add dialect tests.
>>
>> Julian
>>
>>
>> > On Apr 14, 2019, at 4:45 AM, Andrew O <[email protected]> wrote:
>> >
>> > I am trying out Calcite against a DBMS that does not support the limit
>> > syntax in nested / sub queries.   (The JOOQ blog captures more details /
>> > examples at:
>> >
>> https://www.jooq.org/doc/3.1/manual/sql-building/sql-statements/select-statement/limit-clause/#N467A6
>> > )
>> >
>> > I'm interested in how I could have similar behaviour in Calcite.  My
>> > starting attempt / thinking is that it needs a JDBC rule that re-writes
>> /
>> > adjusts Sort operations based on the relevant SqlDialect. However I'm
>> not
>> > sure if / how I can match only sorts within nested queries and avoid
>> > changing the root / non-nested limit operations.
>> >
>> >
>> > Is this the correct thinking? Is there any relevant examples to look at
>> for
>> > this?
>> >
>> > Thanks
>> >
>> > Andrew
>>
>>

Reply via email to