mysql:4940
From: <mizuki-yamamoto@xxxxxxxxxx>
Date: Thu, 17 Jan 2002 11:50:03 +0900
Subject: [mysql 04940] MYSQL C API 「 mysql_use_result 」について
私は、山本と申します。
つぎの事象につきまして、どなたかご存知でしたら、教えてください。
状況としては、まずmysql_real_connectで、2つのコネクションを作成し
ています。
片方のコネクションであるテーブル(ここではTABLE_Aとします)を検索して
います。
そのTABLE_AはBLOB型を含んだ1レコードサイズの大きいもので、クライ
アント処理にするのは
適さないため、検索時、mysql_use_resultを使用してます。
その検索1レコードのカレント行をローカル変数に読み込みその値を変更し、別コネ
クションでそのレコードを
変更した値(ローカル変数から)でUPDATEをかけるという処理を最終抽出レ
コードまでループする処理です。
この処理を実際に実行してみたところ、ある件数まで(ここでいう件数とは検索条件
にマッチする件数)
はうまくいくのですが、その件数を超えると実行処理自体は正常終了で返してくるの
ですが、実際は
検索されるはずの件数より少ない回数のループで終了してしまうという事象がおきて
しまうのです。
例)上記処理をTABLE_Aから100件抽出するようなSQLを発行した場合。
        検索される件数・・・100件、UPDATEされる件数・・・100件
  上記処理をTABLE_Aから30000件抽出するようなSQLを発行した場合。
   検索される件数・・・200件、UPDATEされる件数・・・200件
   (このとき、whileのbreak条件として、mysql_fetch_rowがNULLに
なったらという指定をしています)
また、検索条件の正誤確認のためUPDATE部分のみコメントアウトして、走らせ
たところ、
正しくループカウンタは30000を刻んでいました。
mysql_use_resultは同一コネクションでは最終行まで結果を返したあと、
mysql_free_resultにて結果セットを
開放してからでないといけないとありますが、別コネクションを張ったとしても、そ
れに該当するのでしょうか?
ご存知の方いらっしゃいましたら、ご回答よろしくお願いいたします。 
-> 4940 2002-01-17 11:50 [<mizuki-yamamoto@xxx] MYSQL C API 「 mysql_use_result 」について 4941 2002-01-17 14:22 ┗["goudo" <goudo@xxxxx] 4944 2002-01-17 14:52 ┗[<mizuki-yamamoto@xxx]