あとに続くセクションでは、Postgres のSQL問い合わせ言語に、下記を追加することで どのように拡張できるかを説明します。
関数
型
オペレータ
集約
Postgresは演算がカタログで駆動されているため 拡張が可能です。もし標準のリレーショナルシステムに親しんでいる方なら、 システムカタログと呼ばれるものの中に、データベース、テーブル、コラム、などの情報 が格納されていることをご存知でしょう。(システムによってはこれをデータ辞書と呼ぶものも あります。)このカタログはユーザの目には他のテーブルと同じように移りますが、 DBMS がその内部情報をそこに格納しているのです。Postgres と標準のリレーショナルシステムの重要な違いは、Postgres はカタログにより多くの情報を格納するということです。テーブルとカラムに関する情報 だけではなく、型、関数、アクセスメソッド、等も格納されています。これらのテーブルは ユーザが変更できます。そして、Postgresは内部演算をこれらの テーブルに基づいて行うので、Postgresはユーザによって拡張 されることができるのです。比べると、一般のデータベースシステムはDBMS 内のハードコーディングされたプロシージャを変えるか、DBMSによって 特別に書かれたモジュールをロードしなければ拡張することができません。
Postgresが他のデータマネージャと違うのは、サーバが動的 ローディングによってユーザの書いたコードを取り入れられることです。つまり、ユーザが 新しい型か関数を実装するオブジェクトコードファイル(例:コンパイルされた.o ファイルか 共有ライブラリ)を指定することができ、Postgresが要求 された通りにロードするのです。SQLで書かれたコードをサーバに 追加するのは更に簡単です。このように演算を簡単に変えることができるため Postgresは新しいアプリケーションや格納構造体の迅速な プロトタイプに適しています。