2

Postgresql 9.2 でユーザー定義型を実装していて、混乱しました。PostgreSQL 9.2 のドキュメントには、ユーザー定義型に関するセクション (35.11) があります。そのセクションの 3 番目の段落では、ドキュメントは型の構築に使用される入力関数と出力関数を参照しています。これらの関数の目的について混乱しています。ディスク上の表現に関心がありますか、それともメモリ内表現のみに関心がありますか? 上記のセクションでは、入力関数と出力関数を定義した後、次のように述べています。

型を単に格納するだけでなく、それ以上のことをしたい場合は、型に対して必要な操作を実装する追加の関数を提供する必要があります。

入力関数と出力関数はシリアル化を処理しますか? 私が理解しているように、入力関数は実行に使用されるINSERT INTO関数であり、出力関数SELECTは型に対して実行されるため、基本的に実行したい場合はINSERT INTO、入力または出力関数に埋め込まれた、または呼び出されたシリアル化関数が必要です。誰かが私にこれを説明するのを助けることができますか?

4

1 に答える 1

1

この型の値を SQL クエリでリテラルとして表現し、結果として出力列に返すことができるように、型にはテキスト表現が必要です。

たとえば'2013-20-01'、日付のテキスト表現です。型の入力関数はこの文字列を日付として認識し、内部表現に変換するため (メモリ内での使用とディスクへの保存の両方) VALUES('2013-20-01'::date)、SQL ステートメントに書き込むことができます。date

逆に、クライアント コードが を発行するSELECT date_field FROM tableと、内部の値date_fieldはテキスト表現で返されます。これは、型の出力関数によって内部表現から生成されます (クライアントがこの列のバイナリ形式を要求した場合を除く)。

于 2013-01-29T19:41:50.733 に答える