2014年12月3日水曜日

MySQL Fabricつらい(mysql_select_dbがサポートされてない)

昨日パケットキャプチャを取って調べてたときに気付いた 、mysql_select_dbが効かない件をぴゃーっと雑に調べてみた。

sql-common/client.cのmysql_select_dbを見ると、

4493 int STDCALL
4494 mysql_select_db(MYSQL *mysql, const char *db)
4495 {
4496 int error;
4497 DBUG_ENTER("mysql_select_db");
4498 DBUG_PRINT("enter",("db: '%s'",db));
4499 DISABLE_FOR_FABRIC(1);
4500
4501 if ((error=simple_command(mysql,COM_INIT_DB, (const uchar*) db,
4502 (ulong) strlen(db),0)))
4503 DBUG_RETURN(error);
4504 my_free(mysql->db);
4505 mysql->db=my_strdup(key_memory_MYSQL,
4506 db,MYF(MY_WME));
4507 DBUG_RETURN(0);
4508 }

既に「いかにもサポートされてなさそうなふいんき(略)」
念のためDISABLE_FOR_FABRICを探してみると include/sql_common.hの中にあって、

242 /* Standard code to disable some features for fabric connections */
243
244 #define DISABLE_FOR_FABRIC(ERRVAL) \
245 if (mysql->fabric_context || mysql->options.use_fabric) \
246 { \
247 set_mysql_error(mysql, CR_NOT_SUPPORTED_WITH_FABRIC, unknown_sqlstate); \
248 DBUG_RETURN(ERRVAL); \
249 }

常にCR_NOT_SUPPORTED_WITH_FABRICが返ると。

確かに指向的にステートレスっぽいもんねMySQL Fabric。とはいえカレントデータベースが決め打てないってことは、replicate-do-dbとかしてると死ねるねぇ。。

0 件のコメント :

コメントを投稿