ページの先頭行へ戻る
Enterprise Postgres 17 リリース情報

2.3.231 クライアントコマンドのsearch_path設定の変更

非互換

FUJITSU Enterprise Postgres 10では、pg_dump、pg_upgrade、vacuumdb、および他のクライアントコマンドにおいて、search_path設定にpg_catalogスキーマのみを含むように変更します。本変更により、クライアントコマンドがエラーになる場合があります。

FUJITSU Enterprise Postgres 9.6以前の場合

クライアントコマンドのスキーマの検索順序はsearch_pathパラメータで設定した順となります。

[例]

=# CREATE FUNCTION f1(int) RETURNS int LANGUAGE SQL AS 'SELECT $1 + 1';
CREATE FUNCTION
=# CREATE FUNCTION f2(int) RETURNS int LANGUAGE SQL AS 'SELECT f1($1) + 1';
CREATE FUNCTION
=# CREATE TABLE t1(c1 int, c2 int, c3 int);
CREATE TABLE
=# CREATE INDEX ix1 ON t1(f2(c1));
CREATE INDEX

$ reindexdb db
FUJITSU Enterprise Postgres 10以降の場合

クライアントコマンドのスキーマの検索対象はpg_catalogスキーマのみです。

[例]

=# CREATE FUNCTION f1(int) RETURNS int LANGUAGE SQL AS 'SELECT $1 + 1';
CREATE FUNCTION
=# CREATE FUNCTION f2(int) RETURNS int LANGUAGE SQL AS 'SELECT f1($1) + 1';
CREATE FUNCTION
=# CREATE TABLE t1(c1 int, c2 int, c3 int);
CREATE TABLE
=# CREATE INDEX ix1 ON t1(f2(c1));
CREATE INDEX

$ reindex db
reindexdb: データベース"db"の再インデックス化に失敗しました: ERROR:  関数f1(integer) は存在しません (10494)
行 1: SELECT f1($1) + 1
             ^
HINT:  指定名称、指定引数型に合う関数がありません。明示的な型キャストが必要かもしれません (14431)
QUERY:  SELECT f1($1) + 1
CONTEXT:  SQL関数"f2"がインラインになっています (14744)

対処方法

クライアントコマンドがエラーになった場合、エラーの原因となったオブジェクトをスキーマ修飾してください。