MySQL: compound time units (`YEAR_MONTH`, `DAY_HOUR`...) fail in `EXTRACT` and `INTERVAL`
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
- #2700 @princejain756 による — マージされずにクローズ
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 35/100
調査の方向性
Start with the MySQL dialect handling for EXTRACT date/time fields and INTERVAL units, then inspect the parser tests for those expressions. Add coverage for the 11 listed compound units in both contexts; done means the supplied examples and tests parse successfully. An open linked pull request (#2700) already addresses this issue.
索引モデルが issue の本文から書いたものです。
説明
MySQL and MariaDB accept compound time units in EXTRACT and in INTERVAL expressions (DATE_ADD, DATE_SUB, + INTERVAL...). MySqlDialect rejects them, in 0.63.0 and on main:
use sqlparser::dialect::MySqlDialect;
use sqlparser::parser::Parser;
for sql in [
"SELECT EXTRACT(YEAR_MONTH FROM d) FROM t",
"SELECT DATE_ADD(d, INTERVAL '1-2' YEAR_MONTH) FROM t",
"SELECT d + INTERVAL '1 2' DAY_HOUR FROM t",
] {
println!("{:?}", Parser::parse_sql(&MySqlDialect {}, sql));
}
Err(ParserError("Expected: date/time field, found: YEAR_MONTH at Line: 1, Column: 16"))
Err(ParserError("INTERVAL requires a unit after the literal value at Line: 1, Column: 35"))
Err(ParserError("INTERVAL requires a unit after the literal value at Line: 1, Column: 27"))
The simple units (DAY, MONTH, QUARTER...) parse fine.
The compound units are the same 11 in MySQL and MariaDB:
SECOND_MICROSECOND, MINUTE_MICROSECOND, MINUTE_SECOND, HOUR_MICROSECOND, HOUR_SECOND, HOUR_MINUTE, DAY_MICROSECOND, DAY_SECOND, DAY_MINUTE, DAY_HOUR, YEAR_MONTH.
- MySQL: https://dev.mysql.com/doc/refman/8.4/en/expressions.html#temporal-intervals
- MariaDB: https://mariadb.com/docs/server/reference/sql-functions/date-time-functions/date-and-time-units
Thx,
- 主要言語
- Rust
- スター
- 3.5k
- フォーク
- 805
- 平均マージ
- 2日 3時間
- マージ済み PR(30日)
- 116
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/datafusion-sqlparser-rs のほかの issue
-
Redshift
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
apache/datafusion-sqlparser-rs#2959 ·
メンテナーはふだん 1 日以内に返信
-
Redshift
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
apache/datafusion-sqlparser-rs#2958 ·
メンテナーはふだん 1 日以内に返信
-
PostgreSQL
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
apache/datafusion-sqlparser-rs#2862 ·
メンテナーはふだん 1 日以内に返信
-
PostgreSQL
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
apache/datafusion-sqlparser-rs#2861 ·
メンテナーはふだん 1 日以内に返信
-
PostgreSQL
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
apache/datafusion-sqlparser-rs#2858 ·
メンテナーはふだん 1 日以内に返信
apache/datafusion-sqlparser-rs の issue をすべて見る
似ている issue
-
area:schema documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
ElectronicWave/Elemental#252 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
dekobon/big-code-analysis#1887 ·
メンテナーはふだん 1 日以内に返信
-
Shell中文符号输入异常オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信