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

sonp sonp @ inter7.jp
2007年 4月 29日 (日) 23:18:26 JST


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 メーリングリストの案内