[
https://issues.apache.org/jira/browse/FLINK-30847?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Nuyanzin updated FLINK-30847:
------------------------------------
Description:
This is a follow up ticket based on review
[https://github.com/apache/flink/pull/21519#pullrequestreview-1267744410]
Calcite guidance rule 5 says that
(https://calcite.apache.org/javadocAggregate/org/apache/calcite/plan/RelRule.html)
{quote}5. Do not create an INSTANCE constant inside your rule. Instead, create
a named instance of your rule, with default configuration, in a holder class.
The holder class must not be a sub-class of RelOptRule (otherwise cyclic
class-loading issues may arise). Generally it will be called XxxRules, for
example CsvRules. The rule instance is named after your rule, and is based on
the default config (Config.DEFAULT, or DEFAULT_CONFIG for converter rules):
{code:java}
/** Rule that matches a {@code Project} on a
* {@code CsvTableScan} and pushes down projects if possible. */
public static final CsvProjectTableScanRule PROJECT_SCAN =
CsvProjectTableScanRule.Config.DEFAULT.toRule();
{code}
{quote}
was:
This is a follow up ticket based on review
[https://github.com/apache/flink/pull/21519#pullrequestreview-1267744410]
Calcite guidance rule 5 says that
{quote}
5. Do not create an INSTANCE constant inside your rule. Instead, create a named
instance of your rule, with default configuration, in a holder class. The
holder class must not be a sub-class of RelOptRule (otherwise cyclic
class-loading issues may arise). Generally it will be called XxxRules, for
example CsvRules. The rule instance is named after your rule, and is based on
the default config (Config.DEFAULT, or DEFAULT_CONFIG for converter rules):
{code:java}
/** Rule that matches a {@code Project} on a
* {@code CsvTableScan} and pushes down projects if possible. */
public static final CsvProjectTableScanRule PROJECT_SCAN =
CsvProjectTableScanRule.Config.DEFAULT.toRule();
{code}
{quote}
> Some rel rules violate Calcite guidance rule about instance creation
> --------------------------------------------------------------------
>
> Key: FLINK-30847
> URL: https://issues.apache.org/jira/browse/FLINK-30847
> Project: Flink
> Issue Type: Technical Debt
> Components: Table SQL / Planner
> Affects Versions: 1.17.0
> Reporter: Sergey Nuyanzin
> Priority: Minor
>
> This is a follow up ticket based on review
> [https://github.com/apache/flink/pull/21519#pullrequestreview-1267744410]
>
> Calcite guidance rule 5 says that
> (https://calcite.apache.org/javadocAggregate/org/apache/calcite/plan/RelRule.html)
> {quote}5. Do not create an INSTANCE constant inside your rule. Instead,
> create a named instance of your rule, with default configuration, in a holder
> class. The holder class must not be a sub-class of RelOptRule (otherwise
> cyclic class-loading issues may arise). Generally it will be called XxxRules,
> for example CsvRules. The rule instance is named after your rule, and is
> based on the default config (Config.DEFAULT, or DEFAULT_CONFIG for converter
> rules):
> {code:java}
> /** Rule that matches a {@code Project} on a
> * {@code CsvTableScan} and pushes down projects if possible. */
> public static final CsvProjectTableScanRule PROJECT_SCAN =
> CsvProjectTableScanRule.Config.DEFAULT.toRule();
> {code}
> {quote}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)