[Gauche-devel-jp] Re: dbd.mysqlで、fetchを途中でやめたい場合

Back to archive index

えんどう yasuy****@javao*****
2004年 4月 19日 (月) 06:20:42 JST


 えんどうです。
 
ご指摘ありがとうございます。

>dbi-execute-query を使って、SELECT等を行った場合、
>その結果を全部取得するまでは、次のSQLを実行出来なくなってしまうようです。

http://www.kahua.org/cgi-bin/kahua.cgi/kahua-web/show/dev/DBI

すべての結果セットを得てしまうときの負荷を考えて dbi_use_result を
使うことにしたのですが、そのような副作用があるのなら dbi_store_result を
使ったほうが良いのかもしれません。

上記のToDoに書いたように、
本当は dbi_use_result と dbi_store_result のどちらを使うか
選べた方が良いのでしょうが、DBI層での抽象化方法を思いつかなかったので
ペンディングにしてあります。

DBI層で抽象化するのではなく、dbd.mysql を直接呼び出して
どちらか切り替えておく、で良いのかも知れません。

# 他言語のDBI/DBDも調べてみたほうが良いのでしょうね。

>;; なので、返り値の<dbi-result-set>をなくしてしまうと、
>;; どうしようもなくなってしまう気が…‥

これは利用側で結果セットを保存しなかったとき困る、という意味でしょうか?

>なので、 dbd/mysql.c の 104行目は、
>mysql_use_result() ではなく、 mysql_store_result()
>を使った方が無難な気がします。

mysql_store_result に書き換えてみて 0.1.4 を出そうかと思います。

>;; おまけ
>;; http://www.tir.ne.jp/~nekoie/mtest/mtest.cgi
>;; http://www.tir.ne.jp/~nekoie/mtest/mtest.txt
>;; http://www.tir.ne.jp/~nekoie/mtest/util-mysql.scm

おお、DBI/DBDの最初の応用例のような気がします。(^^)
何かありましたらまたご指摘ください。m(_ _)m

-- 
ENDO Yasuyuki <yasuy****@javao*****>
http://www.javaopen.org/~yasuyuki/ (Personal/Japanese Only)
http://www.javaopen.org/jfriends/ (Japanese Only)




Gauche-devel-jp メーリングリストの案内
Back to archive index