apache / apache/datafusion-sqlparser-rs
Expected end of statement, found: COMMENT while parsing MySQL `CREATE TABLE` statement
- 主要语言
- Rust
- 星标
- 3.5k
- 派生
- 772
- 平均合并
- 4 天 9 小时
- 30 天内合并 PR
- 17
描述
Hi,
I'm using sqlparser = "0.38.0", trying to parse the below with
```
let result = Parser::parse_sql(dialect.as_ref(), &sql);
let ast: Vec = Vec::new();
match result {
Ok(value) => {
println!("Parse Ok");
let ast = value;
},
Err(err) => {
eprintln!("Error: {}", err);
std::process::exit(-1);
},
}
```
However it is failing with **sql parser error: Expected end of statement, found: COMMENT at Line: 1, Column 691**. Is there a way to ignore anything outside the parenthesis as that is irrelevant for my usecase however I suspect this is unintended behaviour?
```
CREATE TABLE `randoms_2` (
`first_name` varchar(64) NOT NULL,
`last_name` varchar(64) NOT NULL,
`home_phone` varchar(12) NOT NULL,
`email` varchar(64) NOT NULL,
`address` varchar(64) NOT NULL,
`city` varchar(32) NOT NULL,
`state` varchar(2) NOT NULL,
`zip` varchar(5) NOT NULL,
`date_of_birth` varchar(10) NOT NULL,
`ssn` varchar(9) NOT NULL,
`drivers_license` varchar(32) NOT NULL,
`drivers_license_state` varchar(2) NOT NULL,
`income_type` varchar(16) NOT NULL,
`account_type` varchar(16) NOT NULL,
`routing_number` varchar(32) NOT NULL,
`account_number` varchar(32) NOT NULL,
`bank_name` varchar(64) NOT NULL,
PRIMARY KEY (`ssn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='LOAD DATA LOCAL INFILE "random.csv" INTO TABLE randoms_2 COLUMNS TERMINATED BY '','' ENCLOSED BY ''"'' LINES TERMINATED BY ''\\r\\n'' IGNORE 1 LINES;';
```
贡献指南
这个仓库没有索引到贡献指南
调研方向
从 Parser::parse_sql 入口开始,重现 MySQL CREATE TABLE 示例,重点关注末尾的 ENGINE、CHARSET 和 COMMENT 子句。确定对此有效语句的预期处理方式,并验证报告的输入能够正确解析,同时为末尾的 COMMENT 子句提供回归测试覆盖。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- mysql, rust, sql
- 领域
- compilers, databases
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100