私はPostgreSQL C APIのlibpqを使っています。 PGresult*
の値をRubyの同等のデータ型に変換できる必要があります。私は現在、すべてのデータを選択して、PQgetvalue()
を使用しています。私にはchar*
というルビー文字列に変換することができます。それは簡単です。しかし、PQftype()
によって返されたOIDに従って、char*
からint
、float
またはdouble
への型変換を行うことができる例がありますか?タイプ変換。 CのlibpqでPostgreSQLのOID値をどうすればよいですか?
実際に、私はOIDをどのように解釈するのか分かりませんし、the documentationはポインタを与えてくれないようです。 this pageが見つかりましたが、このOIDを使用してC APIの型変換を行う方法を理解するのには役立ちません。私はどこかで私は大きなswitch文を作ることができる定数のリストがあると思いますか?ただregtype
にキャストし、OIDから型名を取得するために
ありがとうございますが、すべての結果のすべての列についてサーバーにラウンドトリップするのではなく、C APIからこれを取得する方法があるかどうかは分かりますか?私はコアタイプだけに興味があり、ユーザタイプには興味がありません。 – d11wtq
Postgresはこの情報をすべての結果と共に送信することができます。SELECT項目を追加するだけです(行ごとに冗長になります)。私はC APIに精通していません。 –
ドラマはありません。ご協力いただきありがとうございます。私はクライアントライブラリを実装しているので、ユーザのクエリを変更したくない、または過度の追加要求をサーバに送信したくない。私はカタログ/ pg_type.hで実際にそれを見つけたと思います:) – d11wtq