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