pgsqlストアドプロシージャは、内部言語とc言語をサポートしています。pgsql内部およびストアドプロシージャのサポート - PostgreSQLの内部構造を変更できますか?
これらは非常に興味深いですが、私は彼らができることの多くの例を見つけることができません。さらに、ストアドプロシージャを使用してPostgreSQLの内部構造を変更(またはオーバーライド)できるようにするのかどうか疑問に思っていましたか?
これは、PostgreSQLのソースを再構築するための素晴らしい方法です!
pgsqlストアドプロシージャは、内部言語とc言語をサポートしています。pgsql内部およびストアドプロシージャのサポート - PostgreSQLの内部構造を変更できますか?
これらは非常に興味深いですが、私は彼らができることの多くの例を見つけることができません。さらに、ストアドプロシージャを使用してPostgreSQLの内部構造を変更(またはオーバーライド)できるようにするのかどうか疑問に思っていましたか?
これは、PostgreSQLのソースを再構築するための素晴らしい方法です!
PostgreSQL C APIドキュメントのほとんどは、ソースコードのコメントです。カスタム関数や新しいデータ型を作成する以上のことをしたい場合は、物事がどのように適合するか、そしてサーバーとやり取りする方法を理解するまでにはしばらく時間がかかることがあります。
拡張機能を使用してPostgreSQLの既存の機能を置き換えることはできません。 ProcessUtility_hook
、ExecutorStart_hook
などを参照してください。
これらのフックはPostgreSQLの動作を上書きまたは拡張できます。
他の場所では、既存の動作を上書きすることはできず、拡張することができます。それはあなたがしようとしていることに依存します。
ダイナミック共有メモリ、バックグラウンドワーカー、shared_preload_libraries
などのような便利な機能が多数あり、個々のデータベースセッションとは独立して機能するより大きくより複雑な拡張機能を構築できます。
まず、postgresの内部のPostgreSQLマニュアルのセクションを読んでください。次に、contrib /の拡張機能の一部を読んでください。 PostgreSQLの一般的な開発者向けドキュメント、PostgreSQLの開発に関するカンファレンスのプレゼンテーションなど
現在、拡張機能の詳細なドキュメントのライブラリはありません。
Postgresはさまざまな内部イベントに対して[フック](https://wiki.postgresql.org/images/e/e3/Hooks_in_postgresql.pdf)を提供していますが、ソースコード自体の外ではほとんど文書化されていません。これらの多くの例が[contrib modules](https://www.postgresql.org/docs/current/static/contrib.html)で使用されています。どのような変更を心に留めましたか? –