Snowflake: `CREATE DATABASE` and `COPY INTO` consume the `;`, so the next statement is rejected

Ouverte
#2,765 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

  • #2790 par @slopgobblercobbler — fermée sans fusion

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
68/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
rust
Domaine
databases

Piste de recherche

Start by comparing the Snowflake dialect parsing for CREATE DATABASE and COPY INTO with CREATE SCHEMA, which the issue says already handles a following statement. Read the changes from #1939, #1669, and #1786, and check how the open #2438 handles statement endings. Add regression cases for semicolon-separated statements and confirm both statements parse successfully.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Prolific Author Snowflake

With SnowflakeDialect, these fail as soon as another statement follows:

CREATE DATABASE my_db; SELECT 1
  -> sql parser error: Expected: end of statement, found: SELECT at Line: 1, Column: 24
CREATE DATABASE my_db COMMENT = 'x'; SELECT 1
COPY INTO t FROM @stage; SELECT 1
  -> same error (on 0.63.0, COPY INTO gives "Expected: =, found: 1 at Line: 1, Column: 33" instead)
CREATE SCHEMA my_s; SELECT 1
  -> 2 statements (fine)

Each statement parses on its own. CREATE DATABASE my_db; SELECT 1 worked in 0.58.0 and broke in 0.59.0 (#1939); COPY INTO has done this since #1669, which fixed #1519 for a trailing ; only. Same class as #1775 (fixed in #1786). Open PR #2438 makes ->> end these statements but leaves the ; case as is.

Tested on main c45d1f4e (also 0.63.0).

Found with a property-based fuzzer (round trip and statement-separation checks); I used AI assistance for triage and verified every case above.

Langage dominant
Rust
Étoiles
3.5k
Forks
805
Merge moyen
2 j 3 h
PR mergées (30 j)
116

Préparer son environnement

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/datafusion-sqlparser-rs

Toutes les issues de apache/datafusion-sqlparser-rs

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.