[pgsql-jp: 38384] INでの自動CASTについて

sonp sonp @ inter7.jp
2007年 5月 8日 (火) 23:03:35 JST


4/29に以下のメールを送信した『つもり』だったのですが、
設定がマズかったらしく、ずっとメールを受信できず、
送信できていたのかどうかわからないので、再送させてください。

もし、無事に送信できていた場合は、そのご指摘をお願いします。



2月の過去ログまででは、同様の話題が見つからなかったので、確認させてください。

7.3.Xを使用し続けていたのですが、8.2.Xへのバージョンアップを検討しています。
それに伴い、全てのSQLがそのまま動作するのかチェックしているのですが、
以下のような差異がありました。

7.3.XではINの中で数字を書いても、自動的に文字列型に置き換えて実施してくれました。
しかし、8.2.3では、SQLエラーとなってしまいます。

例示するとこんな感じです。

-- (1) OK
SELECT *
FROM (SELECT CAST('100' as VARCHAR) AS c1) AS t1
WHERE t1.c1 IN (100);

-- (2) NG
SELECT *
FROM (SELECT CAST('100' as VARCHAR) AS c1) AS t1
WHERE t1.c1 IN (100, 200);

-- (3) NG
SELECT *
FROM (SELECT CAST('100' as VARCHAR) AS c1) AS t1
WHERE t1.c1 IN (SELECT '100');

7.3.Xでは、全て正常に1件返ってきますが、
8.2.3では、(2)と(3)はSQLエラーになってしまいます。

(1)もエラーになるのなら、なんとなくわかるのですが、
(1)だけ正常に実施されるので、おかしな動きなように思えます。

できれば、次のバージョンでは(2)、(3)も7.2.Xと同様の動作をしていただけるように、
お願いしたいのですが、可能なことでしょうか?

よろしくお願いします。



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