[ 
https://issues.apache.org/jira/browse/FLINK-37121?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mingcan Wang updated FLINK-37121:
---------------------------------
    Summary: Wrong syntax and examples in create table statement doc  (was: Fix 
syntax and examples in create table statement doc)

> Wrong syntax and examples in create table statement doc
> -------------------------------------------------------
>
>                 Key: FLINK-37121
>                 URL: https://issues.apache.org/jira/browse/FLINK-37121
>             Project: Flink
>          Issue Type: Improvement
>          Components: Documentation
>    Affects Versions: 1.20.0, 2.0-preview
>         Environment: mac os
>            Reporter: Mingcan Wang
>            Priority: Major
>             Fix For: 1.20.0, 2.0-preview
>
>
> create table in parserImpls.ftl :
> *DISTRIBUTION* clause is before *PARTITION* clause.
> {code:java}
> SqlCreate SqlCreateTable(Span s, boolean replace, boolean isTemporary) :
> {
>     final SqlParserPos startPos = s.pos();
>     boolean ifNotExists = false;
>     SqlIdentifier tableName;
>     List<SqlTableConstraint> constraints = new 
> ArrayList<SqlTableConstraint>();
>     SqlWatermark watermark = null;
>     SqlNodeList columnList = SqlNodeList.EMPTY;
>     SqlCharStringLiteral comment = null;
>     SqlTableLike tableLike = null;
>     SqlNode asQuery = null;
>     SqlNodeList propertyList = SqlNodeList.EMPTY;
>     SqlDistribution distribution = null;
>     SqlNodeList partitionColumns = SqlNodeList.EMPTY;
>     SqlParserPos pos = startPos;
>     boolean isColumnsIdentifiersOnly = false;
> }
> {
>     <TABLE>
>     ifNotExists = IfNotExistsOpt()
>     tableName = CompoundIdentifier()
>     [
>         <LPAREN> { pos = getPos(); TableCreationContext ctx = new 
> TableCreationContext();}
>         TableColumnsOrIdentifiers(pos, ctx)
>         {
>             pos = pos.plus(getPos());
>             isColumnsIdentifiersOnly = ctx.isColumnsIdentifiersOnly();
>             columnList = new SqlNodeList(ctx.columnList, pos);
>             constraints = ctx.constraints;
>             watermark = ctx.watermark;
>         }
>         <RPAREN>
>     ]
>     [ <COMMENT> <QUOTED_STRING> {
>         String p = SqlParserUtil.parseString(token.image);
>         comment = SqlLiteral.createCharString(p, getPos());
>     }]
>     [
>         <DISTRIBUTED>
>         distribution = SqlDistribution(getPos())
>     ]
>     [
>         <PARTITIONED> <BY>
>         partitionColumns = ParenthesizedSimpleIdentifierList()
>     ]
>     [
>         <WITH>
>         propertyList = Properties()
>     ]
>     [
>         <LIKE>
>         tableLike = SqlTableLike(getPos())
>         {
>             if (isColumnsIdentifiersOnly) {
>                 throw SqlUtil.newContextException(
>                     pos,
>                     ParserResource.RESOURCE.columnsIdentifiersUnsupported());
>             }
>             return new SqlCreateTableLike(startPos.plus(getPos()),
>                 tableName,
>                 columnList,
>                 constraints,
>                 propertyList,
>                 distribution,
>                 partitionColumns,
>                 watermark,
>                 comment,
>                 tableLike,
>                 isTemporary,
>                 ifNotExists);
>         }
>     |
>         <AS>
>         asQuery = OrderedQueryOrExpr(ExprContext.ACCEPT_QUERY)
>         {
>             if (replace) {
>                 return new SqlReplaceTableAs(startPos.plus(getPos()),
>                     tableName,
>                     columnList,
>                     constraints,
>                     propertyList,
>                     distribution,
>                     partitionColumns,
>                     watermark,
>                     comment,
>                     asQuery,
>                     isTemporary,
>                     ifNotExists,
>                     true);
>             } else {
>                 return new SqlCreateTableAs(startPos.plus(getPos()),
>                     tableName,
>                     columnList,
>                     constraints,
>                     propertyList,
>                     distribution,
>                     partitionColumns,
>                     watermark,
>                     comment,
>                     asQuery,
>                     isTemporary,
>                     ifNotExists);
>             }
>         }
>     ]
>     {
>         if (isColumnsIdentifiersOnly) {
>             throw SqlUtil.newContextException(
>                 pos,
>                 ParserResource.RESOURCE.columnsIdentifiersUnsupported());
>         }
>         return new SqlCreateTable(startPos.plus(getPos()),
>             tableName,
>             columnList,
>             constraints,
>             propertyList,
>             distribution,
>             partitionColumns,
>             watermark,
>             comment,
>             isTemporary,
>             ifNotExists);
>     }
> } {code}
> And I try to parse a sql which *DISTRIBUTION* clause is after *PARTITION* 
> clause will failed.So we need to move the *[ <distribution> ]* before 
> *[PARTITIONED BY]*
> And the syntax is missing the *TEMPORARY* optional keyword.
> And some examples have a comma at the end of the last column



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

Reply via email to