Hi.

之前就已经开了一个 issue 关于 Optional 文档,你可以直接认领这个 issue[1]。另外,如果是 Flink
文档的错误,可以参考下这个PR,对应着修改[2]。

Best,
Shengkai

[1] https://issues.apache.org/jira/browse/FLINK-20760
[2] https://github.com/apache/flink/pull/19498

Xuyang <xyzhong...@163.com> 于2022年6月7日周二 23:46写道:

> Hi, 非常欢迎你一起参与社区的建设中来。
>
> 社区有一套完整的贡献流程,大体可以参照文档[1]。
>
> 总的来说可以细分为:
>
> 1、发现问题,并在jira[2]中提出一个issue
>
> 2、提一个pr并在pr中写明相关的issue号码+模块名+简单描述,具体可以参考下其他的pr来写
>
> 3、热心的同学会帮你review的,你也可以在你新建的issue下面ping我下(xuyang)
>
>
>
>
> [1] https://flink.apache.org/contributing/how-to-contribute.html
>
> [2]
> https://issues.apache.org/jira/projects/FLINK/issues/FLINK-27084?filter=allopenissues
>
>
>
>
> --
>
>     Best!
>     Xuyang
>
>
>
>
>
> 在 2022-06-07 18:08:10,"朱育锋" <comeonyf...@163.com> 写道:
> >Hi
> >
> >很抱歉这么晚回复
> >
> >1. Hi
> Xuyang老师,确实如你所说,调用applyFilters方法之后,又调用了copy方法生成了新的JdbcDynamicTableSource对象,在新的JdbcDynamicTableSource对象中再次调用了getScanRuntimeProvider方法。现在已经成功实现了谓词下推,十分感谢
> >2. Hi Shengkai老师,我十分愿意贡献到社区,不过我之前从未参与过GitHub开源项目,这对我既是机会又是挑战,我愿意挑战下自己。
> >为此,我通读了一遍Flink官网的贡献指南,当我阅读到这一节时[1],我点击了文本[2]上的链接,显示"The requested URL was
> not found on this
> server",发现是md文档中链接的URL拼写错误造成的。我提了一个hotfix[3],正好借助这个PR熟悉下贡献流程,辛苦老师帮忙Review下
> >
> >[1]
> https://flink.apache.org/contributing/code-style-and-quality-common.html#nullability-of-the-mutable-parts
> >[2] "usage of Java Optional"
> https://flink.apache.org/contributing/code-style-and-quality-java.md#java-optional
> >[3] https://github.com/apache/flink-web/pull/544
> >
> >Best regards
> >YuFeng
> >
> >> 2022年6月2日 10:28,Shengkai Fang <fskm...@gmail.com> 写道:
> >>
> >> Hi.
> >>
> >> 我记得 Jdbc Connector 实现了 ProjectionPushDown。你可以参考着实现。
> >>
> >> xuyang 老师说的对,getScanRuntimeProvider 发生在 push down
> >> 之后。应该不会有你说的问题。另外,可以考虑贡献到社区[1],我们也可以帮忙一起 review 下,帮忙解决你的问题?
> >>
> >> Best,
> >> Shengkai
> >>
> >> [1] https://issues.apache.org/jira/browse/FLINK-19651
> >>
> >> Xuyang <xyzhong...@163.com> 于2022年6月1日周三 23:47写道:
> >>
> >>>
> >>>
> Hi,在SQL优化的末尾,StreamPhysicalTableSourceScan转化为StreamExecTableSourceScan的过程中[1],会执行一次getScanRuntimeProvider,此时的getScanRuntimeProvider一定是在applyFilters方法之后触发的。
> >>>
> >>>
> >>>
> >>>
> >>> 你可以尝试将filterFields记录在JdbcDynamicTableSource
> >>> 这个类中,如果该值为空,则getScanRuntimeProvider
> >>> 时无需拼接(在applyFilters执行之前一定是空的);当该值不为空的时候,在getScanRuntimeProvider
> >>> 进行拼接(最后一次physical node转exec node时,一定执行过applyFilters方法)。
> >>>
> >>>
> >>>
> >>>
> >>> [1]
> >>>
> https://github.com/apache/flink/blob/98997ea37ba08eae0f9aa6dd34823238097d8e0d/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/nodes/exec/common/CommonExecTableSourceScan.java#L83
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>>
> >>>    Best!
> >>>    Xuyang
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> 在 2022-06-01 20:03:58,"朱育锋" <comeonyf...@163.com> 写道:
> >>>
> >>>
> Hi,在SQL优化的末尾,StreamPhysicalTableSourceScan转化为StreamExecTableSourceScan的过程中[1],会执行一次getScanRuntimeProvider,此时的getScanRuntimeProvider一定是在applyFilters方法之后触发的。<br/><br/>你可以尝试将filterFields记录在JdbcDynamicTableSource
> >>> 这个类中,如果该值为空,则getScanRuntimeProvider
> >>> 时无需拼接(在applyFilters执行之前一定是空的);当该值不为空的时候,在getScanRuntimeProvider
> >>> 进行拼接(最后一次physical node转exec node时,一定执行过applyFilters方法)。<br/><br/>[1]
> >>>
> https://github.com/apache/flink/blob/98997ea37ba08eae0f9aa6dd34823238097d8e0d/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/nodes/exec/common/CommonExecTableSourceScan.java#L83
>

回复