[ 
https://issues.apache.org/jira/browse/FLINK-17409?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17093251#comment-17093251
 ] 

zhanghang-dev edited comment on FLINK-17409 at 4/27/20, 9:32 AM:
-----------------------------------------------------------------

I modified the SqlCreateView code (#1,#2) in parserImpls.ftl now returns 
correctly
{code:java}
SqlCreate SqlCreateView(Span s, boolean replace) : {
    final SqlParserPos startPos = s.pos(); // #1
    SqlIdentifier viewName;
    SqlCharStringLiteral comment = null;
    SqlNode query;
    SqlNodeList fieldList = SqlNodeList.EMPTY;
}
{
    <VIEW>
    viewName = CompoundIdentifier()
    [
        fieldList = ParenthesizedSimpleIdentifierList()
    ]
    [ <COMMENT> <QUOTED_STRING> {
            String p = SqlParserUtil.parseString(token.image);
            comment = SqlLiteral.createCharString(p, getPos());
        }
    ]
    <AS>
    query = OrderedQueryOrExpr(ExprContext.ACCEPT_QUERY)
    {
        return new SqlCreateView(startPos.plus(getPos()), viewName, fieldList, 
query, replace, comment);   // #2
    }
}
{code}


was (Author: zhanghang-dev):
I modified the SqlCreateView code (the red part) in parserImpls.ftl now returns 
correctly
{code:java}
SqlCreate SqlCreateView(Span s, boolean replace) : {
    final SqlParserPos startPos = s.pos();
    SqlIdentifier viewName;
    SqlCharStringLiteral comment = null;
    SqlNode query;
    SqlNodeList fieldList = SqlNodeList.EMPTY;
}
{
    <VIEW>
    viewName = CompoundIdentifier()
    [
        fieldList = ParenthesizedSimpleIdentifierList()
    ]
    [ <COMMENT> <QUOTED_STRING> {
            String p = SqlParserUtil.parseString(token.image);
            comment = SqlLiteral.createCharString(p, getPos());
        }
    ]
    <AS>
    query = OrderedQueryOrExpr(ExprContext.ACCEPT_QUERY)
    {
        return new SqlCreateView(startPos.plus(getPos()), viewName, fieldList, 
query, replace, comment);
    }
}
{code}

> SqlCreateView's SqlParserPos return wrong value
> -----------------------------------------------
>
>                 Key: FLINK-17409
>                 URL: https://issues.apache.org/jira/browse/FLINK-17409
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Runtime
>    Affects Versions: 1.10.0
>            Reporter: zhanghang-dev
>            Priority: Minor
>
> i add a test method in 
> FlinkSqlParserImplTest,sqlNode.getParserPosition().getEndColumnNum() should 
> return length of sql.
> {code:java}
> @Test
> public void testCreateViewSqlNodePosition() throws SqlParseException{
>  String sql = "CREATE VIEW v1 AS SELECT 1";
>  SqlNode sqlNode = getSqlParser(sql).parseQuery();
>  System.out.println(sqlNode.getParserPosition().getLineNum());      // 1
>  System.out.println(sqlNode.getParserPosition().getEndLineNum());   // 1
>  System.out.println(sqlNode.getParserPosition().getColumnNum());    // 1
>  System.out.println(sqlNode.getParserPosition().getEndColumnNum()); // 6 wrong
> }
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to