alibaba / alibaba/druid

odps 解析多路输出(multi insert)语句似乎有问题

Open
#2,913 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
28.2k
Forks
8.6k
PR merge metrics
No merged PRs in 30d

Description

```sql
FROM (SELECT *
FROM user1
)a
-- LEFT OUTER JOIN (SELECT *
-- FROM user2
-- )b
-- ON a.gender = b.gender
INSERT OVERWRITE TABLE user PARTITION ( region , dt )
SELECT a.user_id
,a.gender
,a.age
,a.region
,a.dt
WHERE a.age = 25
```
将上述代码中的注释解除掉, 就会出现以下异常:
```log
Exception in thread "main" com.alibaba.druid.sql.parser.ParserException: syntax error, error in :' )a
LEFT OUTER JOIN (SELECT *
', expect INSERT, actual LEFT pos 53, line 3, column 11, token LEFT
at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:284)
at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:292)
at com.alibaba.druid.sql.parser.SQLStatementParser.parseHiveInsert(SQLStatementParser.java:3420)
at com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser.parseInsert(OdpsStatementParser.java:257)
at com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser.parseStatementListDialect(OdpsStatementParser.java:84)
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:411)
at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:72)
at org.luvx.me.TaskODPS.parseSql(TaskODPS.java:23)
at org.luvx.me.TaskODPS.main(TaskODPS.java:50)
```

出现位置的代码是:
```Java
new OdpsStatementParser(sql).parseStatementList();
```

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure with the provided ODPS SQL and the entry point `new OdpsStatementParser(sql).parseStatementList()`. Read `SQLStatementParser.parseHiveInsert`, `OdpsStatementParser.parseInsert`, and the reported `SQLParser` error location to trace why the joined source is rejected. Done means the uncommented multi-insert statement parses without the reported exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, sql
Domain
databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.