PostgreSQL 18 generated virtual columns require STORED
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
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
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/datafusion-sqlparser-rs
-
ClickHouse
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
apache/datafusion-sqlparser-rs#2599 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
ClickHouse
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
apache/datafusion-sqlparser-rs#2597 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Hive
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
apache/datafusion-sqlparser-rs#2589 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
apache/datafusion-sqlparser-rs#2461 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Add SQL/PGQ keywordsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
apache/datafusion-sqlparser-rs#2393 ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của apache/datafusion-sqlparser-rs
Issue tương tự
-
component:sight
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
agentic-os-org/ANOLISA#4115 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
A-io-database bug needs triage python
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Change output crossing a compactsize boundary leaves the fee slightly below the requested feerateĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
bitcoindevkit/bdk_wallet#578 ·
Maintainer thường phản hồi trong vòng 8 ngày
-
`python.analysis` setting changes (e.g. `completeFunctionParens`) are not picked up until reloadĐang mởlanguage-server
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 2 ngày