[pgsql-jp: 29750] Re: MSProject2000とPostgreSQL7.2.1

Takao Kato sirius @ jp.fujitsu.com
2003年 4月 30日 (水) 18:50:02 JST


 加藤@川崎です。

..snip..
> という事は...これについては、修正の必要がないという認識で良いのですか?
> 私の調査では、そのまま修正せず実行したところ
> 以下のSQL文によりエラーが発生しております。

エラー自体はnameとunknown(なんで??)との比較演算子が定義されていないか
ら起こったエラーですね。msproject2000.sqlでは定義されているのに?と、
気になったんで以下を試しました。結論だけ書けば問題ありませんでした。

-- ここから --
% vi msproject.sql			⇒編集内容は後述
% createdb mstest
% psql mstest
mstest=# select version();
                             version                              
------------------------------------------------------------------
 PostgreSQL 7.1.2 on sparc-sun-solaris2.8, compiled by GCC 2.95.3
(1 row)
mstest=# \i msproject2000.sql
psql:msproject2000.sql:1: ERROR: table "msp_assignments" does not exist
:
psql:msproject2000.sql:26: ERROR:  Language plpgsql doesn't exist
CREATE
:
DROP
CREATE
:
INSERT x 1
:
mstest=# select * from pg_tables where tablename like 'msp%';
:
(21 rows)
mstest=# select * from pg_tables where tablename ~~ 'msp%';
:
(21 rows)
mstest=#
-- ここまで --

先頭に psql: が付いている箇所が「存在しないテーブルなどを削除してる」
のエラー(26件)です。CREATEが4つ程続いた後、「~~」のDROPが登場して、あ
とはスムーズに処理されます。結果的、問題のクエリで21件ヒットしました。

こちらで行った msproject2000.sql の編集内容は以下の通りです。

(1)/* 〜 */を削除(1行・複数行に関わらずとにかく削除)
(2)(1)で削除したうち、先頭のDROPクエリのみ書き戻す。

これでなんの問題もない状態になりました。
# あと、plpgsql.soの置き位置だけ気をつけてやる必要がありますね。


上記のような状況からなんとなく、

	コメントのつもりで変なものを余計に消した
	利用者権限的にオペレータを消せない(==上書きできない)

が原因のような気がします。その辺り確認できませんか?例えば、

drop operator ~~ (name,text);

を実行できるか。ちなみに権限が無い場合のエラーは、

	ERROR:  RemoveOperator: operator '~~': permission denied

です。この場合、権限有りのユーザ(ex. postgres)でmsproject2000.sqlを実
行し直して下さい。


その他の問題は.....有識者の皆様お願い ^^;
----
加藤@川崎
お便りは kato @ lantc.cs.fujitsu.co.jp まで



pgsql-jp メーリングリストの案内