Npgsql 10.0 compatibility: DATE columns throw InvalidCastException due to DateOnly default mapping change
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 58/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- postgresql
- Lĩnh vực
- databases
Hướng nghiên cứu
Bắt đầu với bản tái hiện bằng F# trong issue bằng cách sử dụng PostgreSQL 15.12, Npgsql 10.0.1 và SQLProvider.PostgreSql 1.5.17. Theo dõi đường đi của PostgreSQL provider gọi NpgsqlDataReader.GetDateTime() khi đọc một cột date. Hoàn thành khi truy vấn đọc giá trị date mà không gặp InvalidCastException trên Npgsql 10.0, với hành vi bị ảnh hưởng được bao phủ bởi một regression test phù hợp.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
SQLProvider is incompatible with Npgsql 10.0, which changed the default .NET mapping for PostgreSQL date columns from System.DateTime to System.DateOnly (and time from TimeSpan to TimeOnly).
To Reproduce
CREATE TABLE test (
id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
d DATE NOT NULL
);
INSERT INTO test (d) VALUES ('2024-01-28');
open FSharp.Data.Sql.PostgreSql
open FSharp.Data.Sql.Common
type Db = SqlDataProvider<
DatabaseProviderTypes.POSTGRESQL,
"Host=localhost;Database=test;Username=postgres;Password=test">
let ctx = Db.GetDataContext()
for row in query { for r in ctx.Public.Test do select r } do
printfn "%A" row.D // throws InvalidCastException with Npgsql 10
Environment (please complete the following information):
- PostgreSQL v15.12
<PackageReference Include="Npgsql" Version="10.0.1" />
<PackageReference Include="SQLProvider.PostgreSql" Version="1.5.17" />
Additional context
This is from an analysis by Claude.
SQLProvider's PostgreSQL provider internally calls
GetDateTime()on theNpgsqlDataReaderwhen readingdatecolumns. In Npgsql 10.0, this throws anInvalidCastExceptionat runtime because the reader now returnsDateOnlyby default fordatecolumns.The build succeeds because SQLProvider's type mapping is resolved at design time independently of Npgsql's runtime behavior. The failure only surfaces at runtime when rows are actually read.
Workaround
Apply the Npgsql 10.0 legacy behavior opt-out via
AppContextswitch as documented in the Npgsql 10.0 release notes.
Additional References
- Ngôn ngữ chính
- F#
- Star
- 627
- Fork
- 147
- Merge trung bình
- 2 giờ 2 phút
- Pull request đã merge (30 ngày)
- 1
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
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 fsprojects/SQLProvider
-
enhancement
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
fsprojects/SQLProvider#872 · 2 bình luận ·
-
Repo Assist? Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
fsprojects/SQLProvider#870 · 1 bình luận ·
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 42/100
fsprojects/SQLProvider#868 · 2 bình luận ·
-
sql server
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
fsprojects/SQLProvider#851 · 1 bình luận ·
-
Async Support for Individuals Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
fsprojects/SQLProvider#845 · 6 bình luận · 1 reaction ·
Tất cả issue của fsprojects/SQLProvider
Issue tương tự
-
[6.x]: "Cannot use object of type stdClass as array" loading Users index (regression of #19182) Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
[InvoiceShelf] No database info Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
community-scripts/ProxmoxVE#17396 · 1 bình luận ·
-
bug possible-duplicate
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
AOSSIE-Org/PictoPy#1553 · 4 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
BasedHardware/omi#15274 · 3 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100