odps 解析多路输出(multi insert)语句似乎有问题
- 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
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