PostgreSQL 18 generated virtual columns require STORED
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 73/100
Direzione di ricerca
Inizia dalla gestione delle colonne generate in PostgreSqlDialect e riproduci l’istruzione CREATE TABLE fornita con la modalità omessa. Assicurati che le colonne generate virtuali di PostgreSQL 18 siano accettate, quindi aggiungi o esegui una copertura di regressione che dimostri che l’istruzione viene analizzata correttamente senza richiedere STORED.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
PostgreSqlDialect rejects PostgreSQL 18 generated columns when the generated-column mode is omitted.
PostgreSQL 18 supports both stored and virtual generated columns. Per the PostgreSQL 18 docs, generated columns are virtual by default and VIRTUAL / STORED are optional explicit mode keywords:
https://www.postgresql.org/docs/current/ddl-generated-columns.html
Reproduction
Using sqlparser 0.62.0 with PostgreSqlDialect, parse:
CREATE TABLE users (
first_name text NOT NULL,
last_name text NOT NULL,
name character varying(255)
GENERATED ALWAYS AS (((first_name || ' '::text) || last_name))
NOT NULL
);
Expected behavior
The statement parses successfully, with name represented as a generated virtual column. Since PostgreSQL 18 defaults generated columns to virtual, omitted mode should be accepted as virtual or at least accepted with no explicit mode.
Actual behavior
Parsing fails with:
sql parser error: Expected: STORED, found: NOT
This also affects PostgreSQL 18 pg_dump output, which emits generated virtual columns without an explicit VIRTUAL keyword, for example:
name character varying(255) GENERATED ALWAYS AS (((first_name || ' '::text) || last_name)) NOT NULL
Notes
GenericDialect can parse a variant when VIRTUAL is made explicit, but PostgreSqlDialect currently appears to require STORED after GENERATED ALWAYS AS (...).
- Lingua principale
- Rust
- Stelle
- 3.5k
- Fork
- 774
- Merge medio
- 4g 2h
- PR unite (30g)
- 54
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/datafusion-sqlparser-rs
-
Hive
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
apache/datafusion-sqlparser-rs#2589 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/datafusion-sqlparser-rs#2461 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Add SQL/PGQ keywordsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
apache/datafusion-sqlparser-rs#2393 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
apache/datafusion-sqlparser-rs#2390 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
apache/datafusion-sqlparser-rs#2591 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di apache/datafusion-sqlparser-rs
Issue simili
-
area:casework bug criticality:p3 triage:needs-implementation
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
registrystack/registry-stack#1623 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
DioxusLabs/anyrender#98 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
leptos-rs/leptos#4885 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
longbridge/gpui-kit#3276 ·
I maintainer di solito rispondono entro 1 giorno