apache / apache/datafusion-sqlparser-rs

Make `CreateTable.location` / `AlterTable.location` make more sense

Ouverte
#1,518 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Rust
Étoiles
3.5k
Forks
772
Merge moyen
4 j 9 h
PR mergées (30 j)
17

Description

`CreateTable.location` has no documentation and is a tricky edge case, not always set even when SQL statement did set location.

https://docs.rs/sqlparser/latest/sqlparser/ast/struct.CreateTable.html#structfield.location

Since this took some time to figure out, here's what I've found for others also pondering its role:

- `CREATE EXTERNAL TABLE .. LOCATION 'foo'` sets `CreateTable.location`
- `CREATE TABLE .. LOCATION 'foo'` sets `CreateTable.hive_formats.location`
- `ALTER TABLE .. LOCATION` sets `AlterTable.location`
- `AlterTable.location` types are about Hive, and is thus a bit confusing for external tables: https://docs.rs/sqlparser/latest/sqlparser/ast/enum.Statement.html#variant.AlterTable.field.location
- alter vs create behaviors thus do not match

Maybe make Hive syntax use the top-level `location` field?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par les définitions dans docs.rs de CreateTable.location, CreateTable.hive_formats.location et AlterTable.location, puis suivez le comportement de l’analyseur pour les formes CREATE EXTERNAL TABLE, CREATE TABLE et ALTER TABLE LOCATION listées dans l’issue. Le travail est terminé lorsque la sémantique de location est rendue cohérente ou clairement documentée, avec une couverture de régression pour ces cas.

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

Évaluation

Stack technique
rust, sql
Domaine
compilers, databases
Type d'issue
Refactorisation
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

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