[前][次][番号順一覧][スレッド一覧]

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@]