ver5.0.37をソースからビルドする際の注意点

このバージョンから"SHOW PROFILE"コマンドが実装されていますが、これを処理するためのパーサのコードが、Bison 1.75に対応していないようです。

mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$ bison --version
bison (GNU Bison) 1.75
Written by Robert Corbett and Richard Stallman.

Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$ touch sql_yacc.yy
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$ make
bison -y -p MYSQL  -d --debug --verbose sql_yacc.yy
sql_yacc.yy:6793.13: parse error, unexpected ":", expecting ";" or "|"

Bison 2.3だとパースエラーにならないので、Bisonのバージョンをあげることで回避可能です。

mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$ bison --version
bison (GNU Bison) 2.3
Written by Robert Corbett and Richard Stallman.

Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$ touch sql_yacc.yy
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$
mir@t43:/hoge/tritonn/dev/mysql-5.0.37.senna/sql$ make
bison -y -p MYSQL  -d --debug --verbose sql_yacc.yy
conflicts: 250 shift/reduce

あるいは、某Sさんがパッチを公開しているので、Bisonのバージョンアップができない方はそれを使うと良いかもしれません。

http://yu.irx.jp/dev/senna/files/t101.m5037.s103.fixyacc1.diff

一応、bugレポートをあげてみました。

どきどき。