mysql:650
From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Tue, 26 Jan 1999 14:19:47 +0900
Subject: [mysql 00650] Re: MB problem
民斗です。 [Subject: [mysql 00647] Re: MB problem] [Date: Mon, 25 Jan 1999 18:29:44 -0800 From:Hironori Sato] > 早速テストテーブルを作ってやってみた所 blob じゃ駄目ですね。これはMBの仕様 > なんでしょうか?MySQL内のMB関係のドキュメントを探しまくったのですが見 > つからなくて... ああ、再現しますね…。blob じゃなくて char(n) binary でも発生します。 ちょっと調べてみましたが、MySQL のバグっぽいですね。添付のパッチで直る と思います。 これは MB 時にしたときに発生しますが、私が作ったバグじゃないです (^^; 多分、BIG5CODE でも発生するはずです。 INC_PTR() は MB(または BIG5CODE) 使用時に1文字分ポインタを増加させる ためのマクロです。が、BINARY 比較時は文字コードを意識しないから、単純に +1 すればいいだけのはずなのに、INC_PTR() が使われているため、今回の ような現象になります。 ということで、誰か本家に報告しません? # 私が報告してもいいけど、英語の敷居が高いので遅くなると思われます (^^; -- 民斗 <tommy@xxxxxxxxxx> --- sql/sql_string.cc.orig Tue Oct 27 11:04:02 1998 +++ sql/sql_string.cc Tue Jan 26 14:05:51 1999 @@ -601,5 +601,5 @@ if (str == strend) // Skipp one char if possible return (result); - INC_PTR(str,strend); + str++; } while (*++wildstr == wild_one && wildstr != wildend); if (wildstr == wildend) @@ -618,5 +618,5 @@ if (str == strend) return (result); - INC_PTR(str,strend); + str++; continue; } @@ -631,5 +631,5 @@ if ((cmp= *wildstr) == escape && wildstr+1 != wildend) cmp= *++wildstr; - INC_PTR(wildstr,wildend); // This is compared trough cmp + wildstr++; // This is compared trough cmp do {
647 1999-01-26 11:29 [Hironori Sato <hiro@] Re: MB problem 649 1999-01-26 13:25 ┣[<takeshi@xxxxxxxxxx>] -> 650 1999-01-26 14:19 ┗[民斗 <tommy@xxxxxxxx] 651 1999-01-26 14:44 ┣[<takeshi@xxxxxxxxxx>] 653 1999-01-27 13:07 ┗[Hironori Sato <hiro@]