[ruby-list:40619] ruby-dbi経由でmysql-rubyを使った場合の挙動に関する質問

From: Sougo Tsuboi <sougo.tsuboi@...>
Date: 2005-02-14 05:11:18 UTC
List: ruby-list #40619
坪井と申します。

mysql-rubyをruby-dbi経由で使った際に、BIT型の返値がi386-Linuxと
powerpc-darwin7.7.0で異なるという症状に遭遇しました。
具体的には、前者がStringのインスタンス、後者がFixnumのインスタンスで
値を返します。
どちらの挙動が正しいのか、また、この違いはどこから来るのかについて、
アドバイスを頂ければ幸いです。

それぞれの環境は以下の通りです:

i386-Linux(VineLinux3.1):
  ruby       ... 1.8.2 (2004-11-03) [i386-linux]
  mysql      ... 4.0.23a  # 4.0.22でも確認
  ruby-dbi   ... 0.0.23
  mysql-ruby ... 2.5.1

powerpc-darwin7.7.0(MacOS-X 10.3.8):
  ruby       ... 1.8.2 (2005-12-25) [powerpc-darwin7.7.0]
  mysql      ... 4.0.23
  ruby-dbi   ... 0.0.23
  mysql-ruby ... 2.5.1

具体的には、下記のようなテーブルにおいて、

	CREATE TABLE task_input (
		taskid INT NOT NULL,
		fdid INT NOT NULL,
		labid INT NOT NULL,
		reference BIT NOT NULL,
		UNIQUE (taskid,fdid,labid)
	);

下記のようなコードを書くと、プラットフォームによって結果が
異なります。

    row = @dbh.select_one("SELECT * FROM task_input WHERE taskid=10")
    p row[3].class.name # => linux:String, powerpc:Fixnum


ruby-dbiのmysql-DBDは特にBIT型をハンドリングしていないようなので、
この挙動の違いはmysql-rubyに由来するのかと思いましたが、そもそも
mysql-rubyはすべてをStringで返すような仕様だったかと記憶しています。
(WebSiteが落ちているようで確認できませんでした)


どこに出したものかと悩んだあげく、こちらに質問させていただこうと
思いました。よろしくお願いします。


---------
坪井創吾, Sougo Tsuboi
sougo.tsuboi@toshiba.co.jp
Knowledge Media Laboratory, TOSHIBA R&D Center.


In This Thread

Prev Next