2012年3月19日

[mew-dist 29471] cmew sometimes stores id as blob

辻と申します。

再びVがメールを集めてくれなくなったので、調べていたのですが、
cmewがid.dbにデータを保存する際に、一部のmessage-idが長過ぎたからか、
blobで保存されていました。
ちなみに、当該メールは76 bytesのmessage-idでした。
このため、
select * from mew where id={id}というSQLがヒットしていませんでした。


Typeを確認したSQL:
select typeof(id) from mew where date={date};

私の環境:
----------
% uname -a
Darwin ktsuji-gnmb.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:47:41 PST 2012; root:xnu-1699.24.23~1/RELEASE_X86_64 x86_64
% ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
% sqlite3 -version
3.7.10 2012-01-16 13:28:40 ebd01a8deffb5024a5d7494eef800d2366d97204
% gem list sqlite3

*** LOCAL GEMS ***

sqlite3 (1.3.5)
----------

以下のパッチで直るようになりました。

diff --git a/bin/cmew b/bin/cmew
index d44abde..c9ac3bb 100755
--- a/bin/cmew
+++ b/bin/cmew
@@ -144,7 +144,7 @@ end

def register(db, maildir, ignore_regex, target, last_mod)
Dir.chdir(maildir)
- add_entry = db.prepare('INSERT INTO mew VALUES(:id, :path, :parid, :date);')
+ add_entry = db.prepare('INSERT INTO mew VALUES(cast(:id as text), :path, :parid, :date);')
get_entry = db.prepare('SELECT * FROM mew WHERE id = ?;')
del_entry = db.prepare('DELETE FROM mew WHERE id = ? AND path = ?;')
db.results_as_hash = true

--
ktsuji


投稿者 xml-rpc : 2012年3月19日 20:20
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/109288
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。