Postgres7->8アップデートでハマる。
メジャーアップデートはハマりやすいというのはよくわかっておったが、
ここまで見事にハマるとは思ってなかったんだゼ。
使用用途がかなり限られているので
DBベースでのPGMはあんまり作ってません。
(複雑な判定式やら関数やら組み込んでも、スキルがあるわけでもないから
遅くなるのが目に見えてる。→というわけで基本APベースです)
故にちょっとした一例にしか過ぎないが、ハマりやすいポイントをメモっておく。
もちろん計算させたり、色々Postgresで関数使っているようならこれ以外にもハマるポイントはあるってことですよ。
ここまで見事にハマるとは思ってなかったんだゼ。
使用用途がかなり限られているので
DBベースでのPGMはあんまり作ってません。
(複雑な判定式やら関数やら組み込んでも、スキルがあるわけでもないから
遅くなるのが目に見えてる。→というわけで基本APベースです)
故にちょっとした一例にしか過ぎないが、ハマりやすいポイントをメモっておく。
もちろん計算させたり、色々Postgresで関数使っているようならこれ以外にもハマるポイントはあるってことですよ。
Postgresのアップデートしなければならなかった理由はよくわからんが
多分なんかの関数か何か使いたかったんだろうw
アップデート作業は関わらなかったんで、その細かい部分は省略。
今までは確か7.1とか7.2とかそのくらい。
これを最新の8.3?くらいまで一気に上げたらしい。
んで、最初にDate型のカラムに対してlikeが使えないという話になった。
文法的に言うとこんな漢字?
SELECT * FROM table WHERE hiduke LIKE '2009-07-%'
(2009年7月のいずれかの日付のを取ってくるみたいな)
一応Xreaの7.4ではこの文法が問題なく使える。
どのVerからというのは細かく調べてないが
Integerやdate、time-stamp等の数値型らしきもの全部にLikeは使用できなくなってる模様。
範囲指定(BETWEEN)か、hiduke < '2009-08-01' and hiduke >='2009-07-01'
みたいな感じにしないとならんようだ。
あと文字列型でも今までのでは SELECT * FROM table WHERE name = 名前
みたいな感じで
シングルクォートつけなくてもいけたんだがこれもシングルクォート必須になってる模様。
日付に関しては色々あって自分はdate型をあんまり使ってなかった。(文字列扱いになってた)
time-stamp使っているところでも普通に範囲で切ってあった。
部署でPostgres使っているのは現在4名いるにはいるが、
2名ほどlikeの罠にハマって涙目状態に。
俺は俺で状態フラグ用の部分だけ数値か文字列かわかんねーから適当でいいやと
シングルクォートつけないで組んでた部分がひっかかったわけだが。
ほとんどの文字列に対してついてないなら論外だが、ほとんどついてて
数値型でもいいんじゃね?って言うような曖昧なものだけだったんで、
数はたいしたこと無かった。
もう一人はJavaのみなので?SQLよりそれ以外のバッチ処理がほとんど。
ハマる要素が全然無い。まあ、DBの話なのでプラットフォームは全く関係ないんですが
表示したり、更新したり色々あるphpの方は全員ハマったことになった・・・。
元の原因は文章をきちんと書いてない事にあるわけだが、
これでもいけるのかーというのを見つけてしまうと使ってしまいたくなるのが人情ってやつ?
最初はゆるゆるで使いやすさ優先だったのかもしれないが
これではまずいよなーってのが発見されると少しずつ規制されて不便になるものです。
アップデートを考えている人はSQL文章がどの程度ゆとりなのか相談した上でやりましょう(?
ちなみにこれとはラインが少し違うが、
ついでにapacheもいじったようで、フォルダの権限関係がリセットされたせいで
phppgadminが動かなくなったりしてダブルパンチ。
一応ODBCベースで黒猫は動くからいいんだが、
インストールしているPCでないと動かないし。直るまで少し不便だ。
アップデート前に「ついでにPHPのVerを(4.3→4.5くらいに)あげといてくださいよ」
って言ったら最新の5.4になっててトリプルパンチ食らいましたがねwwww
phpinfoの項目にdateとか出てきてmktimeとかで
やっぱりこれはこれで変なエラーが少し出ましたが。
(1行date_default_timezone_set()追加で問題なくなったが、でも毎回1行入れないとry)
あとはせいぜいresult_setの変数を適当にゆとりで使用してたら文句1回言われたくらいかなあ。
まあ、query発行しないで結果見ようとしてたからしゃあない部分ではあるんですが。
(これはphpのエラーなのかPearのエラーなのかよくわからんが)
でもまあ、思ってたよりはphp4→php5のエラーは無かったかと思います。
一番苦労したのがPear::DBのインスコだったりするがな。。。
少し落ち着いたらPECL::PDOでも入れてみるかの。PEAR::DBは枯れてるようなものらしいし。

認証、名前入れが面倒だという方はこちらをどうぞ

コメントする