mysql:16340
From: <yata.s15ste@xxxxxxxxxx>
Date: Mon, 23 May 2016 16:28:30 +0900
Subject: [mysql 16340] ストアド内SelectInto句の挙動について(MySQL5.7)
初めて投稿させていただきます。
開発者のたくやと申します。
当方が利用している環境において、
不具合か仕様通りかどうか判断しかねる事象が発生したので、
皆様の知恵をお借りしたいと思い投稿させていただきました。
[概要]
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句の挙動に