Tôi đang làm việc với API PostgreSQL C, libpq. Tôi cần để có thể chuyển đổi các giá trị trong một PGresult*
thành các kiểu dữ liệu tương đương của chúng trong Ruby. Tôi hiện đang chỉ chọn tất cả các dữ liệu và sử dụng PQgetvalue()
, mang lại cho tôi một char*
mà tôi có thể chuyển đổi thành một chuỗi ruby. Thật dễ dàng. Nhưng có bất kỳ ví dụ nào mà ai đó có thể chia sẻ thực hiện chuyển đổi loại từ char*
thành, ví dụ: int
, float
hoặc double
, theo OID trả về PQftype()
?Loại chuyển đổi. Tôi phải làm gì với giá trị OID PostgreSQL trong libpq trong C?
Thực ra, trong ngắn hạn, tôi không biết cách diễn giải OID và the documentation dường như không đưa ra bất kỳ gợi ý nào. Tôi đã tìm thấy this page, nhưng điều đó không giúp hiểu cách sử dụng OID này để thực hiện chuyển đổi loại trong API C. Tôi đoán có một danh sách các hằng số ở đâu đó tôi có thể tạo ra một câu lệnh chuyển đổi lớn từ đâu?
Cảm ơn, mặc dù bạn có biết cách nào để có được điều này từ API C thay vì xoay vòng tới máy chủ cho mỗi cột trong mọi kết quả không? Tôi chỉ quan tâm đến các loại lõi, không phải loại người dùng. – d11wtq
Bạn có thể có Postgres gửi thông tin này với mọi kết quả, chỉ cần thêm các mục SELECT - mặc dù nó sẽ là dự phòng (mỗi hàng). Tôi không quen thuộc với API C. –
Không có phim truyền hình. Cảm ơn bạn đã giúp đỡ. Tôi đang triển khai thư viện ứng dụng, do đó, không muốn sửa đổi truy vấn của người dùng hoặc gửi yêu cầu bổ sung quá mức đến máy chủ. Tôi nghĩ rằng tôi đã tìm thấy nó bây giờ, trên thực tế, trong catalog/pg_type.h :) – d11wtq