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

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句の挙動に