1

管理ドキュメントのFunambolには、タイプとキャストがより厳密な新しいPostgreSQLインスタンスで実行するには、これらのキャストを追加する必要があると記載されています。

CREATE FUNCTION pg_catalog.text(bigint) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int8out($1));';
CREATE CAST (bigint AS text) WITH FUNCTION pg_catalog.text(bigint) AS IMPLICIT;
CREATE FUNCTION pg_catalog.text(integer) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int4out($1));';
CREATE CAST (integer AS text) WITH FUNCTION pg_catalog.text(integer) AS IMPLICIT;

問題は、同じデータベース(PostgreSQLの用語で)に、それらのキャストのためにアプリケーションが壊れた他のスキーマもあることです(「演算子は一意ではありません:不明||整数」とヒント「最適な候補演算子を選択できませんでした。以前は機能していましたが、明示的な型キャストを追加する必要があるかもしれません。」)

したがって、1つの解決策は、もちろん、追加のデータベースを定義し、そこにFunambolのみを含めることです。しかし、データベース全体ではなく、Funambolのスキーマでのみ有効になるように、これらのキャストを定義する方法があるかどうか疑問に思っています。

4

1 に答える 1

0

いいえ、あなたが想像する方法では不可能です。キャストはソースタイプとターゲットタイプによって識別されるため、両方のタイプが組み込みタイプの1つである場合、データベースのすべてのユーザーには、それらの間で同じキャストが表示されます。その方針に沿った唯一の回避策は、組み込みデータ型のクローンを作成することですが、そこには行かないでください。;-)

したがって、Funambolで修正を探すか、アプリケーションを別のデータベースに分割し、dblinkなどでそれらをリンクする必要があります。

于 2011-01-24T21:19:03.143 に答える