apache / apache/datafusion-sqlparser-rs
DorisSQL: add Doris Dialect
- Vorherrschende Sprache
- Rust
- Sterne
- 3.5k
- Forks
- 772
- Ø Merge
- 4 T. 9 Std.
- Gemergte PRs (30 T.)
- 17
Beschreibung
# Doris SQL: Support Doris Dialect
## Summary
Add Doris SQL dialect, covering the core Doris syntax needed to parse common Doris DDL and load statements.
## Motivation
Apache Doris has SQL syntax that differs from the generic SQL dialect, especially around `CREATE TABLE` clauses, key models, partition/distribution definitions, table properties, and Doris-specific load statements. A dedicated `DorisDialect` would let users parse Doris SQL without weakening generic parser behavior.
## Proposed Scope
- Add `DorisDialect`
- Support Doris `CREATE TABLE` clauses:
- `ENGINE = OLAP`
- `DUPLICATE KEY`, `UNIQUE KEY`, `AGGREGATE KEY`
- table `COMMENT`
- `PARTITION BY RANGE/LIST`
- `AUTO PARTITION`
- `DISTRIBUTED BY HASH/RANDOM`
- `BUCKETS` / `BUCKETS AUTO`
- `PROPERTIES (...)`
- Support Doris column options such as `AUTO_INCREMENT`
- Support Doris `LOAD DATA INFILE`
- Support Doris `CREATE ROUTINE LOAD`
- Preserve generic dialect behavior where Doris-only syntax should remain rejected
## Parser / AST Changes
- Add Doris-specific AST structures for key model, partition, distribution, table properties, and load statements
- Extend `CreateTable` with optional Doris-specific fields
- Add `Display` support for canonical SQL rendering
- Add span support for newly introduced AST nodes where applicable
## Tests
Add Doris parser tests covering:
- Positive Doris parsing cases
- Generic/ANSI rejection cases for Doris-only syntax
- AST structure assertions
- Round-trip canonical rendering
- Escaping behavior for table comments containing single quotes
## Implementation Plan
This feature is delivered as a stacked PR series. Each PR builds on the previous one.
- PR 1: Doris dialect skeleton + AUTO_INCREMENT AST cleanup
- PR 2: CREATE TABLE column options
- PR 3: CREATE TABLE key model and distribution
- PR 4: CREATE TABLE partition clauses + ON UPDATE + double-quoted COMMENT
- PR 5: LOAD DATA INFILE
- PR 6: CREATE ROUTINE LOAD
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne mit dem geplanten PR 1-Skelett für den Doris-Dialekt und der Bereinigung des AUTO_INCREMENT-AST und arbeite dann den gestapelten Implementierungsplan über CREATE TABLE-Klauseln und Doris-Ladeanweisungen hinweg ab. Als abgeschlossen gilt die Abdeckung des Doris-spezifischen AST, der CreateTable-Felder, der Display- und span-Unterstützung, positiver Parser-Tests und Ablehnungstests, AST-Assertions, des Round-trip-Renderings und der Fälle zum Escaping von Kommentaren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust, sql
- Bereich
- databases
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100