apache / apache/datafusion-sqlparser-rs

Missing Redshift constructs

Offen
#2,408 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Rust
Sterne
3.5k
Forks
772
Ø Merge
4 T. 9 Std.
Gemergte PRs (30 T.)
17

Beschreibung

`RedshiftSqlDialect` on version 0.62.0 fails to parse a few core Redshift statements that the real engine accepts (tested on Redshift 1.0.347559):

```sql
-- 1. APPROXIMATE COUNT(DISTINCT)
SELECT APPROXIMATE COUNT(DISTINCT id) FROM t;
-- Expected: end of statement, found: (

-- 2. Column-level ENCODE in CREATE TABLE
CREATE TABLE t (id INT ENCODE az64, name VARCHAR(20) ENCODE lzo);
-- Expected: ',' or ')' after column definition, found: ENCODE

-- 3. CREATE EXTERNAL SCHEMA (Spectrum)
CREATE EXTERNAL SCHEMA s FROM DATA CATALOG DATABASE 'db' IAM_ROLE 'arn:...';
-- Expected: TABLE, found: SCHEMA
```

Each is documented, common Redshift syntax:
- `APPROXIMATE COUNT(DISTINCT ...)`: HyperLogLog cardinality [(docs)](https://docs.aws.amazon.com/redshift/latest/dg/r_COUNT.html)
- column-level compression `ENCODE ` in `CREATE TABLE` [(docs)](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html)
- `CREATE EXTERNAL SCHEMA ... FROM DATA CATALOG`: Redshift Spectrum [(docs)](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne bei RedshiftSqlDialect und verfolge die Parser-Pfade für die drei SQL-Beispiele; sieh dir nahegelegene Dialekt-Tests an, falls vorhanden. Als erledigt gilt die Aufgabe, wenn alle drei Anweisungen erfolgreich geparst werden: APPROXIMATE COUNT(DISTINCT), ENCODE auf Spaltenebene und CREATE EXTERNAL SCHEMA.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust, sql
Bereich
compilers, databases
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.