mysql:16341
From: "yoku ts." <"yoku ts." <yoku0825@xxxxxxxxxx>>
Date: Tue, 24 May 2016 11:00:25 +0900
Subject: [mysql 16341] Re: [mysql 16340] ストアド内SelectInto句の挙動について(MySQL5.7)
こんにちは、yoku0825といいます。 取り急ぎ、CentOS 6.6のMySQL 5.7.10とMySQL 5.7.12、 Windowsの5.7.10(x64)でもいただいたテストケースだと再現しませんでした。 元のデータで、暗黙の型変換などでvarcharがDOUBLEにキャストされて > select word,word > into var_text,var_text2 > from dtb_test > where cd = '1111'; が2行返しちゃってるとかそんなことはないでしょうか…。 http://soudai1025.blogspot.jp/2015/12/mysql.html それか、5.6の初期ではMRRが同じ行を2回返しちゃうようなバグがあったので、 それを疑うなら mysql> SET SESSION optimizer_switch= 'mrr=off'; としてから、CALL test_proc(); してみてもらえませんか? yoku0825, 2016年5月23日 16:28 <yata.s15ste@xxxxxxxxxx>: > 初めて投稿させていただきます。 > 開発者のたくやと申します。 > > > 当方が利用している環境において、 > 不具合か仕様通りかどうか判断しかねる事象が発生したので、 > 皆様の知恵をお借りしたいと思い投稿させていただきました。 > > > [概要] > MySQL5.7系環境において、 > ストアドプロシージャ(もしくはファンクション)内で > 非キー項目によるWhere条件を設定し、 > Select Into 句を利用したときの挙動が思惑と異なる。 > > [実行環境] > ・Linux RHEL6系 > ・MySQL 5.7.10-log Community Server > ・スキーマのデフォルト文字コードはUTF-8 > > > [再現手順] > 1)前提として、以下テーブルを作っておく。 > CREATE TABLE `dtb_test` ( > `iddtb_test` int(11) NOT NULL AUTO_INCREMENT, > `cd` varchar(12) DEFAULT '', > `word` varchar(45) DEFAULT NULL, > PRIMARY KEY (`iddtb_test`) > ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; > > 2)以下データを設定する。 > ①iddtb_test ②cd ③word > |--------------| > |①| ②| ③| > |--------------| > |1| 1111| aaaa| > |2| 2222| bbbb| > |3| 3333| cccc| > |4| 4444| dddd| > |5| 5555| eeee| > ---------------- > > 3)以下ストアドをデモとして作成する。 > DELIMITER $$ > CREATE PROCEDURE `test_proc`() > BEGIN > > declare var_text text default ''; > declare var_text2 varchar(45) default ''; > > select word,word > into var_text,var_text2 > from dtb_test > where cd = '1111'; > > select var_text,var_text2; > > END$$ > DELIMITER ; > > 4)作成したストアドを実行する。 > > [求める結果として] > 最後のSelect文で出力される結果がいずれも[aaaa]となること。 > > [結果] > var_text ->[eeee](こちらが思惑と異なる) > var_text2->[aaaa] > > > [補足事項] > ・MySQL 5.6.26 Community Server (Windows7)では求める結果var_text ->[aaaa] > が出力されました。 > ・該当の条件句であるcdをInt型に変更してもvar_text ->[eeee]で出力されまし > た。 > ・条件句のcdに対してUnique Indexを付与すると、var_text ->[aaaa]で出力され > ました。 > ・元々は郵便番号TBLのzipcodeで検索をかけるような処理のときに発生した事象の > 為、 > Unique Indexを仕様的に付与できかねます。 > ・Select Into時に Convert(word,char)をするとvar_text ->[aaaa]で出力されま > した。 > > > 現象が発生してから、補足事項に提示したパターンなどを検証しました。 > > 検証の結果、varchar型の文字列をTEXT型変数に入れる際に > 条件句をスルーしてしまうような不具合があるののかなとも思っていますが、 > もしかしたらTEXT型とvarchar型が非互換という可能性も考えて、 > 質問させていただきました。 > > どなたかご教示いただければ幸いです。 > > 以上、よろしくお願いいたします。 > >
16340 2016-05-23 16:28 [<yata.s15ste@xxxxxxx] ストアド内SelectInto句の挙動について(MySQL5.7) -> 16341 2016-05-24 11:00 ┗["yoku ts." <yoku0825] Re: [mysql 16340] ストアド内SelectInto句の挙動について(MySQL5.7) 16342 2016-05-24 12:43 ┗[たくや <yata.s15ste@] RE: [mysql 16341] Re: [mysql 16340] ストアド内SelectInto句の挙動について(MySQL5.7) 16343 2016-05-25 14:15 ┗["yoku ts." <yoku0825] Re: [mysql 16342] RE: [mysql 16341] Re: [mysql 16340] ストアド内SelectInto句の挙動について(MySQL5.7) 16344 2016-05-25 15:42 ┗[たくや <yata.s15ste@] RE: [mysql 16343] Re: [mysql 16342] RE: [mysql 16341] Re: [mysql 16340] ストアド内SelectInto句の挙動について(MySQL5.7) 16345 2016-05-25 15:46 ┗["yoku ts." <yoku0825] Re: [mysql 16344] RE: [mysql 16343] Re: [mysql 16342] RE: [mysql 16341] Re: [mysql 16340] ストアド内SelectInto句の挙動について(MySQL5.7) 16346 2016-05-25 16:01 ┗[たくや <yata.s15ste@] RE: [mysql 16345] Re: [mysql 16344] RE: [mysql 16343] Re: [mysql 16342] RE: [mysql 16341] Re: [mysql 16340] ストアド内SelectInto句の挙動に