Ramin Gharib created FLINK-39661:
------------------------------------

             Summary: Support all converters for standalone ALTER MATERIALIZED 
TABLE statements
                 Key: FLINK-39661
                 URL: https://issues.apache.org/jira/browse/FLINK-39661
             Project: Flink
          Issue Type: Improvement
            Reporter: Ramin Gharib


FLINK-35191 shipped the parser side for {{{}ALTER MATERIALIZED TABLE 
SUSPEND{}}}, {{{}RESUME{}}}, {{{}REFRESH{}}}, {{{}SET{}}}, and {{{}RESET{}}}. 
{{{}SUSPEND{}}}, {{{}RESUME{}}}, and {{REFRESH}} got planner converters in 
follow-up work. The {{SET}} and {{RESET}} branches, and the related {{SET 
FRESHNESS}} and {{SET REFRESH_MODE}} branches, never did.

As a result the parser accepts the statements but 
{{org.apache.flink.table.planner.operations.converters.SqlNodeConverters}} has 
no converter registered for the resulting nodes. 
{{org.apache.flink.table.planner.delegation.ParserImpl#parse}} then throws 
{{TableException("Unsupported query: " + statement)}} from line 107.

*Affected statements:*
 # {{ALTER MATERIALIZED TABLE t SET ('k' = 'v')}} → 
{{SqlAlterMaterializedTableOptions}}
 # {{ALTER MATERIALIZED TABLE t RESET ('k')}} → 
{{SqlAlterMaterializedTableReset}}
 # {{ALTER MATERIALIZED TABLE t SET FRESHNESS = INTERVAL '1' MINUTE}} → 
{{SqlAlterMaterializedTableFreshness}}
 # {{ALTER MATERIALIZED TABLE t SET REFRESH_MODE = FULL | CONTINUOUS}} → 
{{SqlAlterMaterializedTableRefreshMode}}

This is distinct from the {{CREATE OR ALTER MATERIALIZED TABLE}} path tracked 
under FLINK-38355. That path uses a different AST node and already supports 
options changes via FLINK-39199. The standalone {{ALTER MATERIALIZED TABLE}} 
path tracked here is the form users invoke when they want to mutate a single 
attribute of an existing materialized table without restating the full DDL.

*Related issues:*
 * Parent: FLINK-35187 (FLIP-435 umbrella).
 * Origin: FLINK-35191 "Support alter materialized table related syntaxes: 
suspend, resume, refresh, set and reset". Resolved, but only delivered the 
parser half for SET / RESET / FRESHNESS / REFRESH_MODE.

*Scope:* four sub-tasks below. Each adds one converter, registers it in 
{{{}SqlNodeConverters#registerMaterializedTableConverters{}}}, and adds 
planner-test and IT coverage.

*Out of scope:* any change to the parser grammar, AST nodes, or the {{CREATE OR 
ALTER}} path.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to