+1 for this FLIP. BTW, I think we can add an option for projection push down too.
Yes, we can do all things in the connector, but a common implementation helps a lot! And can introduce an unify option! Best, Jingsong On Wed, Oct 25, 2023 at 10:07 AM Jark Wu <imj...@gmail.com> wrote: > > Thank you for updating Jiabao, > > The FLIP looks good to me. > > Best, > Jark > > On Wed, 25 Oct 2023 at 00:42, Jiabao Sun <jiabao....@xtransfer.cn.invalid> > wrote: > > > Thanks Jane for the feedback. > > > > The default value of "table.optimizer.source.predicate" is true that means > > by default, > > allowing predicate pushdown to all sources is permitted. > > > > Therefore, disabling the pushdown filter for individual sources can take > > effect. > > > > > > Best, > > Jiabao > > > > > > > 2023年10月24日 23:52,Jane Chan <qingyue....@gmail.com> 写道: > > > > > >> > > >> I believe that the configuration "table.optimizer.source.predicate" has > > a > > >> higher priority at the planner level than the configuration at the > > source > > >> level, > > >> and it seems easy to implement now. > > >> > > > > > > Correct me if I'm wrong, but I think the fine-grained configuration > > > "scan.filter-push-down.enabled" should have a higher priority because the > > > default value of "table.optimizer.source.predicate" is true. As a result, > > > turning off filter push-down for a specific source will not take effect > > > unless the default value of "table.optimizer.source.predicate" is changed > > > to false, or, alternatively, let users manually set > > > "table.optimizer.source.predicate" to false first and then selectively > > > enable filter push-down for the desired sources, which is less intuitive. > > > WDYT? > > > > > > Best, > > > Jane > > > > > > On Tue, Oct 24, 2023 at 6:05 PM Jiabao Sun <jiabao....@xtransfer.cn > > .invalid> > > > wrote: > > > > > >> Thanks Jane, > > >> > > >> I believe that the configuration "table.optimizer.source.predicate" has > > a > > >> higher priority at the planner level than the configuration at the > > source > > >> level, > > >> and it seems easy to implement now. > > >> > > >> Best, > > >> Jiabao > > >> > > >> > > >>> 2023年10月24日 17:36,Jane Chan <qingyue....@gmail.com> 写道: > > >>> > > >>> Hi Jiabao, > > >>> > > >>> Thanks for driving this discussion. I have a small question that will > > >>> "scan.filter-push-down.enabled" take precedence over > > >>> "table.optimizer.source.predicate" when the two parameters might > > conflict > > >>> each other? > > >>> > > >>> Best, > > >>> Jane > > >>> > > >>> On Tue, Oct 24, 2023 at 5:05 PM Jiabao Sun <jiabao....@xtransfer.cn > > >> .invalid> > > >>> wrote: > > >>> > > >>>> Thanks Jark, > > >>>> > > >>>> If we only add configuration without adding the enableFilterPushDown > > >>>> method in the SupportsFilterPushDown interface, > > >>>> each connector would have to handle the same logic in the applyFilters > > >>>> method to determine whether filter pushdown is needed. > > >>>> This would increase complexity and violate the original behavior of > > the > > >>>> applyFilters method. > > >>>> > > >>>> On the contrary, we only need to pass the configuration parameter in > > the > > >>>> newly added enableFilterPushDown method > > >>>> to decide whether to perform predicate pushdown. > > >>>> > > >>>> I think this approach would be clearer and simpler. > > >>>> WDYT? > > >>>> > > >>>> Best, > > >>>> Jiabao > > >>>> > > >>>> > > >>>>> 2023年10月24日 16:58,Jark Wu <imj...@gmail.com> 写道: > > >>>>> > > >>>>> Hi JIabao, > > >>>>> > > >>>>> I think the current interface can already satisfy your requirements. > > >>>>> The connector can reject all the filters by returning the input > > filters > > >>>>> as `Result#remainingFilters`. > > >>>>> > > >>>>> So maybe we don't need to introduce a new method to disable > > >>>>> pushdown, but just introduce an option for the specific connector. > > >>>>> > > >>>>> Best, > > >>>>> Jark > > >>>>> > > >>>>> On Tue, 24 Oct 2023 at 16:38, Leonard Xu <xbjt...@gmail.com> wrote: > > >>>>> > > >>>>>> Thanks @Jiabao for kicking off this discussion. > > >>>>>> > > >>>>>> Could you add a section to explain the difference between proposed > > >>>>>> connector level config `scan.filter-push-down.enabled` and existing > > >>>> query > > >>>>>> level config `table.optimizer.source.predicate-pushdown-enabled` ? > > >>>>>> > > >>>>>> Best, > > >>>>>> Leonard > > >>>>>> > > >>>>>>> 2023年10月24日 下午4:18,Jiabao Sun <jiabao....@xtransfer.cn.INVALID> > > 写道: > > >>>>>>> > > >>>>>>> Hi Devs, > > >>>>>>> > > >>>>>>> I would like to start a discussion on FLIP-377: support > > configuration > > >>>> to > > >>>>>> disable filter pushdown for Table/SQL Sources[1]. > > >>>>>>> > > >>>>>>> Currently, Flink Table/SQL does not expose fine-grained control for > > >>>>>> users to enable or disable filter pushdown. > > >>>>>>> However, filter pushdown has some side effects, such as additional > > >>>>>> computational pressure on external systems. > > >>>>>>> Moreover, Improper queries can lead to issues such as full table > > >> scans, > > >>>>>> which in turn can impact the stability of external systems. > > >>>>>>> > > >>>>>>> Suppose we have an SQL query with two sources: Kafka and a > > database. > > >>>>>>> The database is sensitive to pressure, and we want to configure it > > to > > >>>>>> not perform filter pushdown to the database source. > > >>>>>>> However, we still want to perform filter pushdown to the Kafka > > source > > >>>> to > > >>>>>> decrease network IO. > > >>>>>>> > > >>>>>>> I propose to support configuration to disable filter push down for > > >>>>>> Table/SQL sources to let user decide whether to perform filter > > >> pushdown. > > >>>>>>> > > >>>>>>> Looking forward to your feedback. > > >>>>>>> > > >>>>>>> [1] > > >>>>>> > > >>>> > > >> > > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=276105768 > > >>>>>>> > > >>>>>>> Best, > > >>>>>>> Jiabao > > >>>>>> > > >>>>>> > > >>>> > > >>>> > > >> > > >> > > > >