MySQLさんからColumn not foundって言われているけど、ログを見る限りそのカラムはSQLのどこにも出現しない

MySQLおじさんたちの水晶玉デバッグ
33
ITOH Hiroyuki @i_rethi

@do_aki なお環境はautocommit=1です。念のためもう1回やったけど同じ結果に

2016-11-08 17:07:23
どぅーあき @do_aki

@i_rethi あ、ちがう。最後のスレッド B でエラーになるクエリが select * from t1 where id=1 で、 Unknown column 'hoge' in 'field list' が発生する感じなのでした

2016-11-08 17:09:12
ITOH Hiroyuki @i_rethi

@do_aki なるほど… もうちょっと試してみます

2016-11-08 17:14:28
yoku0825 @yoku0825

@do_aki @i_rethi SELECT * の "*" を展開するキャッシュがどこにあるのか探してるけれど、グレッパビリティ悪い…

2016-11-08 17:15:58
どぅーあき @do_aki

ユニットテストで発生しているのだけど、こけるテストだけ実行しても問題なくて、全テストするときだけ発生するので、タイミングの問題か、コネクションの問題か

2016-11-08 17:19:02
yoku0825 @yoku0825

st_select_lex::setup_ref_array?

2016-11-08 17:28:07
yoku0825 @yoku0825

Query_arena *arena= thd->stmt_arena;

2016-11-08 17:28:51
ITOH Hiroyuki @i_rethi

selectを無限ループしながらやってみたりしてるが起きないな。ぐぬぬ

2016-11-08 17:32:17
yoku0825 @yoku0825

@do_aki @i_rethi サーバーサイドプリペア使ってます?

2016-11-08 17:39:38
yoku0825 @yoku0825

@do_aki @i_rethi というわけで一度 DEALLOCATEが要るんじゃ

2016-11-08 17:43:28
ITOH Hiroyuki @i_rethi

@yoku0825 @do_aki なるほど・・・ mysql> execute stmt; ERROR 1054 (42S22): Unknown column 'test.t1.hoge' in 'field list' mysql>

2016-11-08 17:45:12
どぅーあき @do_aki

@i_rethi @yoku0825 ぐぬぬ。またか、またサーバサイドプリペアステートメントの罠なのか……

2016-11-08 17:45:49
yoku0825 @yoku0825

@i_rethi @do_aki スレッドAでそのエラーを出したあとにDEALLOCATE PREPARE stmt; prepare stmt from @s; EXECUTE stmt; で通るようになりますよね? (たぶん)

2016-11-08 17:48:53
どぅーあき @do_aki

@yoku0825 @i_rethi @s mysqlnd で deallocate 発行できたかな……

2016-11-08 17:50:12
ITOH Hiroyuki @i_rethi

gistを更に更新して、バージョンをselectしておいた gist.github.com/hiroi10/ab2e96…

2016-11-08 17:57:02