Pracuję z C API PostgreSQL, libpq. Muszę być w stanie przekonwertować wartości w PGresult*
na ich równoważne typy danych w Ruby. Właśnie wybieram wszystkie dane i używam PQgetvalue()
, co daje mi char*
, którą mogę przekonwertować na ciąg ruby. To łatwe. Ale czy są jakieś przykłady, które ktoś może udostępnić, które dokonują konwersji typu z char*
na, powiedzmy, int
, float
lub double
, zgodnie z OID zwróconym przez PQftype()
?Konwersja typu. Co mam zrobić z wartością OID PostgreSQL w libpq w C?
Właściwie, w skrócie, nie mam pojęcia, jak interpretować OID i the documentation nie wydaje się dawać żadnych wskazówek. Znalazłem this page, ale to nie pomaga zrozumieć, jak używać tego OID do konwersji typu w C API. Zgaduję, że istnieje lista stałych gdzieś, gdzie mogę dokonać dużej zmiany?
Dzięki, czy wiesz, czy istnieje sposób na uzyskanie tego z interfejsu API C zamiast potykać się do serwera dla każdej kolumny w każdym wyniku? Interesują mnie tylko typy podstawowe, a nie typy użytkowników. – d11wtq
Możesz mieć Postgres wysłać te informacje z każdym wynikiem, po prostu dodać elementy SELECT - choć byłoby to zbyteczne (w jednym rzędzie). Nie znam C API. –
Brak dramatów. Dzięki za pomoc. Wdrażam bibliotekę klienta, więc wolałbym nie modyfikować zapytań użytkowników lub przesyłać nadmiernych dodatkowych żądań do serwera. Myślę, że znalazłem go teraz, w katalogu/pg_type.h :) – d11wtq