Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

PostgreSQL 18 generated virtual columns require STORED

Đang mở Phù hợp với người mới
#2,407 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
73/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
postgresql, rust
Lĩnh vực
databases

Hướng nghiên cứu

Bắt đầu từ phần xử lý các cột được sinh trong PostgreSqlDialect và tái hiện câu lệnh CREATE TABLE được cung cấp với chế độ bị lược bỏ. Đảm bảo các cột được sinh ảo của PostgreSQL 18 được chấp nhận, sau đó thêm hoặc chạy phạm vi kiểm thử hồi quy cho thấy câu lệnh được phân tích thành công mà không yêu cầu STORED.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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 (...).

Ngôn ngữ chính
Rust
Star
3.5k
Fork
780
Merge trung bình
4 ngày 10 giờ
Pull request đã merge (30 ngày)
60

Chuẩn bị môi trường

  • Không có Dockerfile hay tệp Docker Compose
  • Có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/datafusion-sqlparser-rs

Tất cả issue của apache/datafusion-sqlparser-rs

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.